我正在使用S3和CloudFront来存储我网站的图像,CSS和JS文件 - 这些文件不是静态的,而是托管在合适的网络服务器上
由于CSS文件频繁更改,我使用的是版本号,以确保用户浏览器在更改时重新加载。当我在我的Apache Web服务器上托管CSS文件时,我使用了以下重定向规则
RewriteEngine On
# CSS Redirection (whatever.min.5676.css is redirected to whatever.min.css)
RewriteRule ^(.*)\.min\.[0-9]+\.css$ $1.min.css
通过这条简单的规则,http://www.example.com/all.min.15.css
重定向到http://www.example.com/all.min.css
如何使用Amazon S3和/或CloudFront重现此类规则?
即将http://example.amazonaws.com/mybucket/css/all.min.3.css
或http://example.amazonaws.com/mybucket/css/all.min.42.css
重定向到http://example.amazonaws.com/mybucket/css/all.min.css
(注意:我的S3存储桶未配置为网站,但应该如此启用重定向规则?)
答案 0 :(得分:0)
注意:此答案不使用任何规则。这可能不是正确的答案。
我将使用查询参数来处理不同的版本,例如:
http://example.amazonaws.com/mybucket/css/all.min.css?ver42
http://example.amazonaws.com/mybucket/css/all.min.css?42
http://example.amazonaws.com/mybucket/css/all.min.css?ver=42
http://example.amazonaws.com/mybucket/css/all.min.css?20141014
确切地说,在我的动态网页中,version参数存储在变量中并附加到url(CSS和JS)。在开发过程中,我只需要增加/设置一个变量来强制浏览器加载新版本。这样,即使在Apache上也不需要重写规则。
缓存也可以正常工作,因为Last-Modified
和ETag
标题保持一致。
希望这有帮助。