我正在考虑使用mod_cache。但是,我希望由Apache缓存的页面(由php生成)通常包含该用户的登录名(“您以...身份登录”)。所以我不能只为所有用户缓存一个页面。
登录状态由cookie决定。所以我认为我可以(在PHP中)在每个页面中包含一个'Vary:Cookie'标题。如果我对RFC 2616的理解是正确的,那么这应该指示Apache(或任何其他)缓存算法为用户代理发送的每个Cookie值缓存单独的页面。
因此,如果浏览器没有发送cookie(用户被注销),则缓存的响应与对Cookie的请求的缓存响应保持独立:state = 89898XAAJ(用户以'Jacob'身份登录)并且再次与Cookie的请求的缓存响应分开:state = XXAIU2389(用户以'Bob'身份登录)。如果一段时间之后,用户请求相同的URL并使用Cookie:state = 89898XAAJ,则会向其提供正确的页面,其中包含“您以Jacob身份登录”(而不是其他缓存的页面)。
我的理解是否正确,这是以这种方式工作还是我在这里忽略了什么?
答案 0 :(得分:0)
我不确定你所描述的方法是否有效。
如果没有,您可以尝试使用重写条件检查cookie值,并根据用户和登录状态重定向到缓存的地址。
此页面讨论基于cookie值的重写:
Check cookie and redirect with Apache
好吧,
乔