【问题标题】:W3 Total Cache not rewriting URLs for files cached on AWS-based CDNW3 Total Cache 不重写缓存在基于 AWS 的 CDN 上的文件的 URL
【发布时间】:2018-01-21 01:30:42
【问题描述】:

我正在使用 W3 Total Cache 插件,该插件设置为与基于 AWS 的 CDN (S3+CloudFront) 一起使用:

  1. 缩小 CSS 和 JS 文件
  2. 将它们发送到 AWS 的 S3
  3. S3 将它们发送到 AWS 的 CloudFront

上面的过程似乎工作正常:

  • style.css 被缩小为 18704.css
  • script.js 被缩小为 39633.js
  • 自动上传到 CDN 有效,然后我可以通过在浏览器的地址栏中键入 URL 来手动访问文件:

    • S3 URL 例如https://<instance>.amazonaws.com/wordpress/wp-content/cache/minify/1/39633.js 被找到并
    • CloudFront URL 例如https://<distribution_id>.cloudfront.net/wp-content/cache/minify/1/39633.js 被找到

插件的自动 URL 重写(加载网页时)最有可能失败,因为 HTML 标头在 URL 中仍然具有 原始主机名

<script type="text/javascript" src="https://www.example.com/wp-content/cache/minify/1/39633.js"></script>
<link rel="stylesheet" type="text/css" href="https://www.example.com/wp-content/cache/minify/1/18704.css" media="all" />

为什么 W3 Total Cache 插件不重写以 CloudFront 为主机的 URL?

Chrome 的网络控制台:缩小的文件是从原始主机而不是 CDN 中提取的

可能的解决方法:

这似乎是一种解决方法,但它确实有效。通过在 .htaccess 文件中指定 RewriteRules,我强制站点通过 CDN 加载 .css.js 文件。

RewriteCond %{REQUEST_URI} \.(css|js)$
RewriteRule ^ https://<distribution_id>.cloudfront.net%{REQUEST_URI} [R,L]

但仍有一个文件拒绝重定向 (18704.css)。我关闭了浏览器缓存(甚至手动删除了浏览器缓存)并且文件仍然拒绝从缓存中加载。我认为这与浏览器缓存无关,Chrome的网络控制台说文件不是从缓存中加载的。

【问题讨论】:

    标签: wordpress amazon-s3 minify amazon-cloudfront w3-total-cache


    【解决方案1】:

    您需要将 minify 选项设置为手动,然后使用 w3total 缓存上传 minify 文件。 enter image description here

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 2013-06-26
      • 2023-03-08
      • 2015-02-09
      • 2012-06-07
      • 2018-08-29
      • 2018-12-07
      • 2018-01-31
      • 1970-01-01
      相关资源
      最近更新 更多