【问题标题】:How to I get control of the Cache-Control header with Wordpress on Apache?如何在 Apache 上使用 Wordpress 控制 Cache-Control 标头?
【发布时间】:2023-04-01 04:40:01
【问题描述】:

这简直让我发疯。我们在 Apache 上运行 Wordpress(如果不是很明显,我们是这个堆栈的新手)。具体来说,这是一个 Bitnami AMI。由于我们几乎 100% 使用 AWS,因此我想在 Wordpress 站点前使用 Cloudfront 动态内容缓存。我已经阅读了大量关于如何使用 W3 Total Cache(或类似内容)来完成这项工作的文档/帖子。但我真正想做的就是抓住 Cache-Control 标头,这样我就可以让 Cloudfront 以应有的方式工作。

目前,我已修改 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 调用中的“钩子”更改为任意数量的值,从“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");
?>

【问题讨论】:

    标签: wordpress apache caching cache-control bitnami


    【解决方案1】:

    答案是重新开始。我构建了一个全新的 AWS Linux 实例并自己安装了 Apache、MySql、PHP 和 Wordpress。我在 .htaccess 中使用我自己的配置来根据文件类型设置 Cache-Control 标头。我安装了 mod_pagespeed 来帮助处理不称职的内容作者上传的巨幅图像。然后我浪费了大量时间来修复所有帖子中的图像 URL。唯一安装的 Wordpress 插件是导入/导出插件(这样我可以从旧服务器获取所有内容)和一个“滑块”插件,允许用户在帖子中浏览图片。

    现在我终于可以在 Wordpress 前正确使用 Cloudfront 了。如果你想做同样的事情,请帮自己一个忙,跳过所有超级骗子的缓存插件。完全没有必要。

    【讨论】:

      【解决方案2】:

      Apache 的 mod_pagespeed 是罪魁祸首。默认设置Cache-Control: no-cache, max-age=0

      您需要更新apache2/conf/pagespeed.conf 以包含

      ModPagespeedModifyCachingHeaders off
      

      然后运行这个来重启apache

      $ cd installdir
      $ ./ctlscript.sh restart apache
      

      参考资料:

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多