对于我的知识,只应为网站的静态内容启用缓存,并且我们对动态页面使用no-cache.网站主页是最动态的页面,因为内容会定期更新.奇怪的是,我发现主要网站也为主页设置了一个短缓存最大值.谷歌设置3秒,stackoverflow 21秒.
更奇怪的是(对我而言),在通过WebPageTest.org分析性能时,它将主页视为静态内容,并期望缓存生命周期长.例如,您将收到stackoverflow.com的短21s缓存生命周期的Failed通知.检查HERE.即使是2小时,您也会收到警告.
最佳答案
理想情况下,您应该缓存包括动态页面在内的所有内容.静态页面/资源可以使用非常高的max-age进行缓存,因为通常它们不会经常更改,即使它们确实发生了更改,您也可以更改请求URL(通过添加QS)以避免缓存条目.
缓存动态页面有点棘手,因为内容经常变化.如果可能,您应该尝试为动态页面实现If-Modified-Since,其中If-Modified-Since是上次页面或子部分更改的时间戳.通常,If-Modified-Since将是数据库中该特定实体的DateModified时间戳列.如果您的页面由多个数据库实体组成,那么If-Modified-Since将是这些条目的DateModified的最小值.实现If-Modified-Since实际上有点麻烦,所以很多人只是保留他们的动态页面,但请记住,如果您的页面/网站非常受欢迎并经常被SE抓取,那将非常有用.
缓存动态页面有点棘手,因为内容经常变化.如果可能,您应该尝试为动态页面实现If-Modified-Since,其中If-Modified-Since是上次页面或子部分更改的时间戳.通常,If-Modified-Since将是数据库中该特定实体的DateModified时间戳列.如果您的页面由多个数据库实体组成,那么If-Modified-Since将是这些条目的DateModified的最小值.实现If-Modified-Since实际上有点麻烦,所以很多人只是保留他们的动态页面,但请记住,如果您的页面/网站非常受欢迎并经常被SE抓取,那将非常有用.