PHP 不遵守我定义的 ETag

标签 php apache wordpress caching

我在做什么

我从数据库中提取图像并将其与所有正确的 header 一起发送到浏览器 - 图像显示正常。我还发送了一个 ETag header ,使用图像内容的 SHA1 作为标签。

图片半定期调用,所以缓存有点问题(不会杀死网站,但很高兴有)。

问题

$_SERVER['HTTP_IF_NONE_MATCH'] 对我不可用。据我所知,这是因为 PHP 的“不服从缓存控制”的生活方式。我不能乱用 session 缓存限制器,因为我没有访问权限。但是,即使我确实可以访问,我也不想碰它:网站 99% 的内容都在 WordPress 下。

环境

  • PHP 4(不要问)
  • Apache 2.2
  • WordPress
  • 图像保存在数据库 (largeblog) 中,我无法更改。

任何指导、提示/技巧等都会有所帮助。我没有太多空间来改变环境/结构的东西。

干杯。

最佳答案

您是否尝试过从 apache_request_headers() 读取 HTTP_IF_NONE_MATCH ?

如果您运行的是 4.3 之前的 php,它之前会调用 getallheaders()。


编辑 我现在看到,在我链接的页面中,您可能还想尝试放置

RewriteEngine on
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

在适当的 .htaccess 文件中强制 Apache 设置您尝试读取失败的 PHP $_SERVER[...] 变量。

关于PHP 不遵守我定义的 ETag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2807321/

相关文章:

php - 尝试创建搜索引擎友好 URL 时出现索引 404 错误

css - Wordpress 自定义 css 和其他插件不工作

javascript:反向显示不工作

php - Travis CI 和 Symfony2 集成 .travis.yml 问题

php - MySQL 查询对 GROUP BY 中的结果进行排序

java - 无法使用 Apache 从 Android 向 Django Web 服务器发出 http 请求

php - WooCommerce 根据产品类别替换购物车/结帐中的 "Available on backorder"

php - Doctrine 查询生成器未给出所有结果 : many-to-many searching id in (x, y)

php - Mysql INSERT INTO...SELECT.... 重复键更新

通过 Java 的 Apache Drill 连接