2

我们有一个流量相当大的静态站点(即没有服务器代码),包含大量图像、脚本、css,由 IIS 7.0 托管

我们想打开一些缓存以减少服务器负载,并考虑将 Web 内容的到期时间设置为将来的某个时间。在 IIS 中,我们可以通过 IIS 响应标头模块中常见 http 标头的“过期 Web 内容”部分在全局级别上执行此操作。也许将内容设置为在投放后 7 天过期。

据我所知,这实际上所做的只是设置max-ageHTTP 响应标头,我想这是有道理的。

现在,混乱:

  1. 首先,我检查过的所有浏览器(IE9、Chrome、FF4)似乎都忽略了这一点,并且仍然向服务器发出有条件的请求以查看内容是否已更改。所以,我不完全确定 max-age 响应标头实际上会产生什么影响?!会不会是旧版浏览器?还是网络缓存?

  2. 我们可能想在短时间内更改站点中的图像......我猜如果 max-age实际上被某些东西使用,就其本质而言,它不会检查这是否图像已经改变了 7 天......所以这也不是我们想要的

我想知道是否最佳做法是将一个站点划分为内容文件夹真的不会经常更改并且只会为这些文件夹开启一些长期到期?如果需要,也许可以改变查询字符串以强制刷新这些文件夹中的内容(例如 /assets/images/background.png?version=2)?

无论如何,在浏览了(相当枯燥的!)HTTP 规范和一些教程之后,我仍然对我们的情况没有真正的感觉。

任何与我们类似的情况的实际经验将不胜感激!

4

1 回答 1

1

浏览器首先获取 HTML,然后是内部的所有资源(css、javascript、图像等)。

如果您让 HTML 很快过期(例如 1 小时或 1 天),然后让其他资源在 1 年后过期,您可以两全其美。

当您需要更新图像或其他资源时,您只需更改该文件的名称,并更新 HTML 以匹配。

下次用户获取新的 HTML 时,浏览器将看到该图像的新 URL,并获取新的 URL,同时从缓存中获取所有其他资源。

此外,在撰写本文时(2015 年 12 月),Firefox 将与服务器的最大并发连接数限制为六 (6)。这意味着,如果您有 30 个或更多资源都托管在同一个网站上,那么在加载页面之前的任何时间都只会下载 6 个资源。您可以通过使用内容交付网络 (CDN) 来加快速度,以便一次下载所有内容。

于 2015-12-15T19:04:54.753 回答