2011-04-12 20 views
0

我有一个用PHP生成的经典html页面。用于缓存动态页面的Http标头

对于此页面(从同一个URL提供服务),我们有两种情况:

  1. 用户登录(基于cookie)=>此页面是特定于用户(我们显示与用户名框+个人信息。)
  2. 用户未登录=>该页面对所有用户都是通用的。

如何设置的标头:

  • 有最侵略性缓存(与60最大年龄)。
  • 避免在用户之间混合页面。

我可以取代我现在头:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

有了这个?

header('Cache-Control: public, max-age=60'); 
header('Vary: *'); 

编辑:是否有可能(如何)在“1”和公众的情况下,“2”

回答

0

如果登录纯粹的cookie,然后根据你只需要缓存controled私人Vary:Cookie标头,使其对特定用户而言是唯一的。变异:*应该尽可能地工作。

+0

保重!它并不那么容易:IE不会缓存Vary头和任何字段的资源[但Accept-Encoding和User-Agent](http://code.google.com/speed/page-speed/docs/caching.html) – alienhard 2011-04-12 19:16:02

+0

如果您不包含Vary头文件,则会遇到安全问题。 IE具有根本没有的方式来处理这种类型的设置的高速缓存,其中所述URL是相同的,但含量变化的基础上的cookie的值(被记录在或不即用户)。 – ajsutton 2011-04-12 19:24:38

+0

是的,但我认为它的错误的方式来尝试解决这个问题因人而异用(除非你有没有IE的用户较少的情况下)。一个好的解决方案是根据不同的情况提供不同的头文件:1)发送阻止缓存的头文件; 2)发送头文件以允许缓存。在这两种情况下都不需要Vary。 – alienhard 2011-04-12 20:16:21