4

我想为我的 WordPress 服务器打开 CloudFlare,但我仍然非常频繁地进行更改。CloudFlare 说它缓存静态文件(javascript、css、图像等),所以我假设如果我对这些文件进行了更改并将它们保存在我的服务器上,它们不会在他们的服务器上显示更改(至少对于尽管)。

如果我对这些文件进行更改,它们最终会传播到它们的服务器吗?这需要多长时间?

当我进行更改时,我一直在做将我的 css 文件的 src 从“my.css”更改为“my.css?v=1.1”和“my.css?v=1.2”等的小技巧,所以它强制您的浏览器获取文件的较新版本,因为它欺骗它认为它是一个新文件。这也适用于 CloudFlare,还是绕过它?

谢谢你。

4

2 回答 2

7

您有几个选项来管理资产的缓存时间。

如果您转到域 > cloudFlare 设置 > 性能设置 > 最小过期 TTL
,您可以在 2 小时和 1 年之间进行选择。这是一个站点全局设置。

如果您转到域 > 页面规则,您可以为站点的某个子部分自定义缓存和其他详细信息。所以这可能是您的 CSS 和 JS 目录,也可能是单个文件。

无论您使用什么设置,如果您转到 domain > cloudflare settings > purge cache,您可以清除单个资产或整个站点缓存

您仍然可以使用您的 CSS 版本控制方法。需要注意的一个细节是,如果您使用 my.css?v=1.1 并且希望 cloudflare 缓存它以提高性能,您需要转到domain > cloudFlare Setting > Perfornamce Settings > Caching Level并将其设置为 agressive。

如果您没有访问者,将从您的服务器而不是 CloudFlare 发送 CSS 文件。

希望这可以帮助!

于 2013-09-01T13:07:47.723 回答
0

CloudFlare 有两个配置缓存的选项。默认设置在他们的控制面板中。在这里您可以设置“缓存所有内容”等选项并控制最大年龄。

但 CloudFlare 也尊重您内容的标题。我更喜欢使用这些,因为它允许我进行最精细的控制。有问题的标题是Cache-Control. 如果此标题不存在,将使用控制面板选项。

如果您发送标头Cache-Control: no-cache,请求将始终检查您的源服务器以查看内容是否是最新的。请注意,这将导致每个请求都到达您的来源。这会减慢您的响应速度,尽管很多时候您可以提供304 NOT MODIFIED响应,因此您可能会节省一些带宽。

如果您发送标头,Cache-Control: max-age=3600CloudFlare 将max-age在请求后最多几秒钟(在本例中为 1 小时)提供缓存内容,然后再检查您的源服务器。

此标头还有更多选项,但这些是基础知识。

当我进行更改时,我一直在做将我的 css 文件的 src 从“my.css”更改为“my.css?v=1.1”和“my.css?v=1.2”等的小技巧,所以它强制您的浏览器获取文件的较新版本,因为它欺骗它认为它是一个新文件。这也适用于 CloudFlare,还是绕过它?

这仍然有效。HTTP 将每个 URL 视为不同的实体,因此必须获取新的 URL。

于 2014-04-15T20:27:57.450 回答