我正在使用W3 Total Cache插件,该插件设置为使用基于AWS的CDN(S3 + CloudFront):
上述过程似乎运行良好:
style.css
缩小为18704.css
和script.js
缩小为39633.js
。自动上传到CDN有效,我可以通过在浏览器的地址栏中键入URL来手动访问文件:
https://<instance>.amazonaws.com/wordpress/wp-content/cache/minify/1/39633.js
并https://<distribution_id>.cloudfront.net/wp-content/cache/minify/1/39633.js
插件的自动网址重写(加载网页时)最有可能失败,因为HTML标头在网址中仍然包含原始主机名:
<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作为主机的网址?
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的网络控制台表示该文件未从缓存中加载。