网站主页应该缓存吗?

时间:2012-03-26 08:37:05

标签: html performance caching http-headers pagespeed

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

更奇怪的是(对我而言),在通过WebPageTest.org分析性能时,它将主页视为静态内容,并期望长缓存生命周期。例如,您将收到stackoverflow.com的短21s缓存生命周期的FAILED通知。检查HERE。即使是2小时,您也会收到警告。

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

3 个答案:

答案 0 :(得分:5)

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

当然,这一切都取决于预期的更新频率,这不仅会因网站而异,还会因页面而异:如果您的“关于我们”页面可能会更改一次一周,让它在1分钟内到期没有意义; OTOH,如果首页每秒更改一次,将其到期时间设置为21秒可能很有用,因为更新延迟<1分钟是可接受的,而刷新不一定发送HTTP请求的20秒是相当的有助于降低负荷。

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

缓存服务器上的任何内容 - 菜单,页眉和页脚区域,横幅。在客户端,缓存HTTP资源(JavaScript,CSS和图像)。

如果页面是动态的,那么当然你不能将它缓存7天,是的,这会使它比正在这样做的网站慢。然而,这些是功能和速度之间权衡的例子。

作为网站的所有者,您需要拨打最佳用户体验的电话 - 没有自动测试会告诉您。