概括
当我查看 stackoverflow 和网络时,我发现普遍缺乏关于缓存使用会话的高性能站点的最佳实践的良好文档。如果我们可以围绕一些基本构建块分享一些想法,尤其是在缓存方面,那将会很有帮助。出于本次讨论的目的,我将避免使用 memcache,而是专注于静态和完全生成的页面的缓存。
所以要设置场景,想象一个 Web 服务器(比如 nginx)、反向代理(比如 varnish)、应用服务器(随便)、数据库服务器(比如 mysql)。
匿名的
- 静态项目(gif/jpg 等)
- 半动态 (js/css)
- 动态的
登录
- 静止的
- 半动态 (js/css)
- 动态的
一般来说,所有的 Anon 都应该是可缓存的,并且大部分都是 Logged In(忽略动态,暂时没有 ESI)。
匿名 #1
- 设置遥远的过期时间
- 如果可能,设置 ETag
- 缓存控制:max-age=315360000
Anon #2 (如果动态生成,则反向代理缓存结果,否则 Anon #1 规则适用)
- 缓存控制:公共,s-maxage=3000
匿名 #3
- 缓存控制:公共,s-maxage=300
登录 #1
- 设置遥远的过期时间
- 如果可能,设置 ETag
- 缓存控制:max-age=315360000
Logged In #2 (如果动态生成,则反向代理缓存结果,否则 Logged In #1 规则适用)
- 缓存控制:公共,s-maxage=3000
登录 #3
- 缓存控制:s-maxage=0,必须重新验证
你有什么建议?当答案出现时,我会更新帖子。