网站主页应该缓存吗?

Goo*_*bot 5 html performance caching pagespeed http-headers

对于我的知识,只应为网站的静态内容启用缓存,并且我们对动态页面使用no-cache.网站主页是最动态的页面,因为内容会定期更新.奇怪的是,我发现主要网站也为主页设置了一个短缓存最大值.谷歌设置3秒,stackoverflow 21秒.

更奇怪的是(对我来说),在分析性能时WebPageTest.org,它将主页视为静态内容,并期望缓存生命周期长.例如,您将收到一个FAILED通知,其中包含21秒的短缓存生命周期stackoverflow.com.点击这里.即使是2小时,您也会收到警告.

如何缓存主页面和其他动态页面?

Pis*_*3.0 5

任何页面都应该被缓存,如果这样做是有用的 - 无论是静态的还是动态的.在运行高流量站点时,不缓存动态页面会变得自杀,因为不必要的重复请求将使站点陷入瘫痪.

当然,这一切都取决于预期的更新频率,不仅在站点之间,而且在页面之间也有所不同:如果您的"关于我们"页面可能每周更改一次,则无法使其过期在1分钟; OTOH,如果首页每秒更改一次,将其到期时间设置为21秒可能很有用,因为更新延迟<1分钟是可接受的,而刷新不一定发送HTTP请求的20秒非常有用降低负荷.

换句话说,西奈山的石碑上没有严格的规则,说"你要一天缓存前页",也不要"你不能缓存动态内容" - 这在很大程度上取决于具体情况一个网站.


Sac*_*hin 4

理想情况下,您应该缓存所有内容,包括动态页面。静态页面/资源可以使用非常高的 max-age 进行缓存,因为通常它们不会经常更改,即使它们确实更改,您也可以更改请求 url(通过添加 QS)以避免缓存条目。缓存动态页面有点棘手,因为内容变化非常频繁。如果可能,您应该尝试为动态页面实现 If-Modified-Since,其中 If-Modified-Since 是页面或子部分上次更改的时间戳。通常,If-Modified-Since 将是数据库中该特定实体的 DateModified 时间戳列。如果您的页面由多个数据库实体组成,则 If-Modified-Since 将是这些条目的 DateModified 最小值。实现 If-Modified-Since 实际上有点麻烦,所以很多人只是将动态页面保留原样,但请记住,如果您的页面/网站非常受欢迎并且经常被 SE 抓取,那么这确实很有帮助。