5

据我所知,缓存应该只对网站的静态内容启用,我们对动态页面使用无缓存。网站主页是最具活力的页面,因为内容会定期更新。奇怪的是,我发现主要网站也为主页设置了较短的缓存最大值。谷歌设置了 3 秒,stackoverflow 设置了 21 秒。

更奇怪的是(对我来说),在分析性能时WebPageTest.org,它将主页视为静态内容,并期望缓存寿命长。例如,您将收到 FAILED 通知,因为 21 秒的缓存生命周期较短stackoverflow.com。检查这里。即使是 2 小时,您也会收到 WARNING。

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

4

3 回答 3

5

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

当然,这完全取决于预期的更新频率,这不仅因站点而异,而且因页面而异:如果您的“关于我们”页面可能每周更改一次,那么让它过期没有意义1分钟内;OTOH,如果首页每秒都在变化,将其过期时间设置为 21 秒可能很有用,因为更新延迟 <1 分钟是可以接受的,但是刷新不一定发送 HTTP 请求的 20 秒非常有用用于降低负载。

也就是说,没有硬性规定,西奈山的石碑上流传下来的,上面写着“你应该缓存一天的首页”,也没有“你不应该缓存动态内容”——这很大程度上取决于具体情况的一个站点。

于 2012-03-26T08:56:57.463 回答
3

理想情况下,您应该缓存所有内容,包括动态页面。静态页面/资源可以使用非常高的 max-age 进行缓存,因为它们通常不会经常更改,即使它们确实更改,您也可以更改请求 url(通过添加 QS)以避免缓存条目。缓存动态页面有点棘手,因为内容变化非常频繁。如果可能,您应该尝试为动态页面实施 If-Modified-Since,其中 If-Modified-Since 是您的页面或子部分最后一次更改的时间戳。通常,If-Modified-Since 将是数据库中该特定实体的 DateModified 时间戳列。如果您的页面由多个数据库实体组成,那么 If-Modified-Since 将是这些条目的 DateModified 的最小值。

于 2012-03-26T08:47:12.593 回答
2

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

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

作为网站的所有者,您需要在最佳用户体验所在的地方进行呼叫- 没有自动化测试会告诉您这一点。

于 2012-03-26T08:58:41.527 回答