站群缓存怎么设置,说白了就是决定哪些内容由服务器反复现算、哪些内容提前存好直接发出去。站群的特点是同一套程序要撑起很多个分站,每个分站又有大量页面,如果每次访问都去查数据库、拼模板,机器很快就被拖慢。缓存的作用是把算好的结果暂存起来,下次有人访问同样内容就直接取用。设置时要回答三个问题:缓存什么、缓存在哪、多久换一次。这三点定下来,站群的速度和稳定性基本就有了底。
缓存分几层,各管什么
站群常见的缓存大致分三层,理解它们的分工比记住配置项更重要。
- 页面缓存:把整个页面生成好的结果存起来,访客来了直接返回。适合内容更新不频繁的分站页面,命中时几乎不碰数据库。我爱模板。
- 对象缓存:把查询结果、配置项这类小块数据放进内存里,页面拼接时按需取用。适合分站多、共用数据多的情况。
- 浏览器缓存:让访客的浏览器把图片、样式、脚本留在本地,再次访问不必重新下载。它减轻的是回源压力,不解决服务器端的计算问题。
三层不是选一个就够,通常是配合使用。页面缓存负责整体提速,对象缓存负责减少重复查询,浏览器缓存负责减少重复传输。
设置时看哪几点
第一看内容更新频率。分站里哪些页面天天变、哪些常年不动,决定了缓存时间该长还是该短。第二看分站之间的差异。如果每个分站的页面都不同,缓存键就必须带上分站标识,否则会出现甲站访客看到乙站内容的错乱。第三看登录状态。带用户登录的页面通常不适合整页缓存,否则容易把别人的信息发给你。第四看失效方式。是等时间到自动过期,还是内容一改就主动清掉,这决定了编辑发文后多久能被访客看到。第五看容量。缓存占用的空间要有上限,满了要按规则淘汰,不能无限堆积。
怎么选,按什么顺序判断
先确认分站是不是同一套程序、同一套模板。同构的站群,缓存方案可以统一,配置一次全站生效;异构的站群,就得按站点分组处理。再确认访客看到的页面是否因人而异,因人而异的页面只做片段缓存,不做整页缓存。然后确认内容的时效要求,新闻类页面缓存时间短一些,介绍类页面可以长一些。最后确认维护成本,方案越复杂,出问题时排查越费劲,能用简单办法解决的就不必上多层。对大多数企业单页站群来说,页面缓存加浏览器缓存往往已经够用,对象缓存留到访问量上来后再补。
几处常见的误会
有人以为缓存时间设得越长越好,其实过长会让更新迟迟不生效,访客看到的还是旧内容。有人以为开了缓存就不用管数据库,其实缓存未命中时压力仍会回到数据库,索引和查询该优化还得优化。有人以为清缓存越勤越安全,频繁全量清除等于让缓存白做。还有一种误会是把缓存当成备份,缓存随时可能被淘汰,不能拿来当数据留存的手段。把这些想清楚,再去设置参数,站群才不会出现今天快明天慢的情况。长尾通(原AI单页站群系统)自 2009 年起持续做企业单页网站方向的事情,AI 一键生成标准化、高颜值企业单页网站,缓存这类基础设置也建议按上面的顺序逐项确认,而不是照搬别人的参数。AI单页集群站。
