这让我非常烦恼。我们在Apache上运行Wordpress(如果不明显的话,我们是新手)。具体来说,这是一个Bitnami AMI。由于我们几乎100%使用AWS,我想在Wordpress站点之前使用Cloudfront动态内容缓存。我已经阅读了大量关于如何使用W3 Total Cache(或类似工具)使其正常工作的文档/帖子。但我真正想做的只是掌握Cache-Control标头,以便我可以让Cloudfront按照预期的方式工作。
目前,我已修改了functions.php以包含代码(基于这里的另一篇帖子),该代码应修改标头。
很不幸,我最终得到的是两个标题。
第一个标题是我的。第二个标题来自堆栈中某个我似乎找不到/配置的位置。我在整个WordPress目录中搜索了任何我能想到的字符串,以帮助我找到执行此操作的代码。
我还尝试更改add_action调用中的“hook”为许多值,从“send_headers”逐步工作。唯一的结果是两个缓存控制标头的顺序发生变化。到目前为止,我无法删除/覆盖“max-age = 0,no-cache”的值。
我还尝试修改.htaccess、特定于Bitnami的htaccess.conf文件等等。
编辑:阅读here后,似乎第二个标题必须在WordPress/PHP内部引起。该文档表明,“处理程序”(在这种情况下为PHP)对响应处理有最后一个话语权。一旦该阶段完成,就只剩下向客户端发送响应和记录。
目前,我已修改了functions.php以包含代码(基于这里的另一篇帖子),该代码应修改标头。
function varnish_safe_http_headers() {
session_cache_limiter('');
header_remove("Cache-Control");
header("Cache-Control: public, max-age=60");
if( !session_id() )
{
session_start();
}
}
add_action( 'template_redirect', 'varnish_safe_http_headers' );
很不幸,我最终得到的是两个标题。
Cache-Control:public, max-age=60
Cache-Control:max-age=0, no-cache
第一个标题是我的。第二个标题来自堆栈中某个我似乎找不到/配置的位置。我在整个WordPress目录中搜索了任何我能想到的字符串,以帮助我找到执行此操作的代码。
我还尝试更改add_action调用中的“hook”为许多值,从“send_headers”逐步工作。唯一的结果是两个缓存控制标头的顺序发生变化。到目前为止,我无法删除/覆盖“max-age = 0,no-cache”的值。
我还尝试修改.htaccess、特定于Bitnami的htaccess.conf文件等等。
编辑:阅读here后,似乎第二个标题必须在WordPress/PHP内部引起。该文档表明,“处理程序”(在这种情况下为PHP)对响应处理有最后一个话语权。一旦该阶段完成,就只剩下向客户端发送响应和记录。
编辑2: 我在网站根目录下添加了一个foo.php文件。它没有调用任何Wordpress函数。但两个Cache-Control头部仍然出现。以下是该文件的全部内容。
<?php
header("Cache-Control: public, max-age=60");
?>