我的网站一直存在这个问题,无法显示更新的 CSS 文件。
上次遇到此问题时,我最终删除了我的 S3 存储桶和 CloudFront 分发版,并使用新名称重新创建了整个存储桶和分发版。现在问题又出现了。每当我更改网站的 CSS 文件时,CloudFront 上的文件都不会更新。如果我手动输入文件路径,我可以看到 CSS 文件已在 S3 存储上更新,但在 CloudFront 端没有更新。
因此,S3 中的文件未在 CloudFront 上同步。任何帮助都值得感激。目前,我能让网站正确显示的唯一方法是关闭 CDN/CloudFront。
我使用的是带有 W3 Total Cache 插件的 Wordpress 2.9。我不认为问题出在 Wordpress 和 Total Cache 插件上,因为它们已经将更新的 CSS 文件上传到 S3 存储中。
我确实尝试等待约 24 小时,也许是某个地方的缓存问题,但显然不是。
谢谢。
答案1
如果其他人遇到同样的问题,这里是解决方法。
以下是我网站目前的运行方式:
Pair.com 网络托管 --> Amazon S3 --> Amazon CloudFront (CDN)
Wordpress 安装在 Pair.com 的托管上。当我进行更改时,W3TC 插件将更新 S3 服务器上的文件。否则,您也可以使用 Amazon Web Services 的 Web 控制台或第三方程序(我使用 S3 Organizer)将文件手动上传到 S3 服务器。问题在于在 CloudFront 中更新同一个文件时。没有手动方式可以做到这一点,而且 CloudFront 每 24 小时仅更新一次。
你可以做的是向 CloudFront 发送一个失效请求。失效请求被接受后,将从 S3 获取新版本文件,问题就解决了。
执行失效的最简单方法是使用第三方 S3 浏览器。目前,只有 Bucket Explorer 和 CloudBerry 具有此功能。如果您想在没有这些程序帮助的情况下执行此操作,以下是 Amazon.com 上的一份文档,它将教您如何执行此操作:http://docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/Actions_Invalidations.html
CraigH@AWS 表示,他们正在努力将 Invalidation 命令实现到 AWS 网络控制台中,但尚不清楚该功能何时上线。