Last-modified 当用户 logged-in 时缓存不显示

Last-modified cache does not show when user has logged-in

我正在使用 last-modified HTTP header 来帮助浏览器进行缓存,我注意到一个烦人的问题。

如果用户在登录之前访问了某个页面,那么即使在用户 logs-in 之后,浏览器也会显示缓存的页面。这意味着他无法在 header 中看到他的 log-in 信息(个人资料照片、通知等),直到他访问他以前从未访问过的网站上的页面。

因为自从他第一次访问以来实际文章本身的内容没有改变,即使他 logs-in.

我已经尝试检查用户是否只有 logged-in(使用 SESSION.LoggedIn 变量),然后将当前日期时间用于 Last-ModifiedExpires Cache-Control 告诉浏览器提供页面的新副本,但它在 Android 浏览器上不起作用。它只是再次提供缓存版本。这意味着用户无法判断他们拥有 logged-in,因为他们的姓名和其他凭据不会出​​现在页面顶部。

我如何有效地使用 HTTP header 缓存并处理以 logged-in 和匿名方式访问同一页面的人? logged-in 信息位于站点的 header 中(就像在 SO 上一样)那么有没有办法不缓存站点 header 而缓存页面的其余部分?

使用 firebug 之类的工具查看 URL 的网络流量。您会注意到它是 'file' objects:html 个文件、javascript 个文件、css 个文件、图像等

我认为您不能很容易地缓存 div(或其他页面布局构造)。

自从我尝试使用 last-modified HTTP header 进行缓存以来已经有一段时间了。我 运行 遇到了与您类似的问题。浏览器 implementation/compatibility 不是 100%。我还使用 last-modified 试图通知搜索引擎蜘蛛文件已更改。那也不太管用。最终我删除了我在 last-modified caching/hinting 的所有尝试,只允许网络服务器和浏览器处理它。

最终我花了很多时间优化数据库查询、数据库索引,并在少数情况下实现了 cfquery 标签的 cachedwithin 属性。这种提高网站性能的尝试对我来说效果更好。