用户登录后不会显示上次修改的缓存

时间:2018-01-09 12:23:34

标签: http caching coldfusion http-headers browser-cache

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

如果用户在登录之前访问了某个页面,则即使用户登录后,浏览器也会显示缓存页面。这意味着他无法在标题中看到他的登录信息(个人资料图片,通知等),直到他访问之前未访问过的网站上的页面。

由于实际文章本身的内容自首次访问以来没有改变,即使他登录,他也会在同一页面上提供服务。

我已尝试检查用户是否刚刚登录(使用SESSION.LoggedIn变量),然后使用当前日期时间Last-ModifiedExpires和{{1告诉浏览器提供页面的新副本,但它不能在Android浏览器上运行。它只是再次提供缓存版本。这意味着用户无法告知他们已登录,因为他们的姓名和其他凭据不会显示在页面顶部。

如何有效地使用HTTP标头缓存,并且还要注意登录和匿名访问同一页面的人员?登录信息位于站点的标题中(就像在SO上一样)所以有没有办法不缓存siteheader而是页面的其余部分?

1 个答案:

答案 0 :(得分:2)

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

我不认为你可以很容易地缓存div(或其他页面布局结构)。

我尝试使用上次修改的HTTP标头进行缓存已经有一段时间了。我遇到了类似的问题。浏览器实现/兼容性不是100%。我还使用了最后修改过来试图通知搜索引擎蜘蛛文件已更改。这也不是很好。最后,我删除了最后修改过的缓存/提示的所有尝试,只允许Web服务器和浏览器处理它。

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