HTTP缓存,用户认证和PHP


HTTP Caching, User Authentication and PHP

我正在开发一些PHP软件,我正在尝试使它有效地利用HTTP缓存。然而,我最近遇到的一个问题是在登录后,在登录之前访问的页面被缓存,并且不像登录一样。

如果PHP和客户端之间有HTTP缓存,这尤其是个问题。如果我将缓存限制器始终设置为"公共",那么页面可能将始终被缓存(即使是通过代理缓存)。如果我在未登录时将缓存限制器设置为"公共",在登录时将缓存限制器设置为"私人",那么我目前遇到的问题可能仍然会发生。如果我将缓存限制器始终设置为私有,代理缓存根本不会受益,并且我目前遇到的问题可能仍然会发生。

这个问题的理想解决方案是什么?是否有一种方法,使网络浏览器"再试一次"后,用户已登录?对于代理缓存,我知道有基于传入cookie进行缓存的方法,所以我相信这可以解决部分问题。但是从浏览器的角度来看,这个问题又如何呢?

这里没有一个很好的解决方案,但你有几个选择:

  1. 使页面真正相同,无论您的用户是否登录或而不是通过使用AJAX通过JSON请求登录状态服务。
  2. 不要缓存页面,只缓存脚本、样式和图像。HTML的浏览器缓存只有在您的用户经常查看的时候才有帮助相同的页面,不期望不同的结果。这是你的吗?用例?如果是,那么您可能已经在使用AJAX来提供实时更新,这可能不是一个巨大的飞跃来实现选择# 1。