【问题标题】:page cache theory - will this work?页面缓存理论——这行得通吗?
【发布时间】:2010-11-11 14:38:15
【问题描述】:

我想在我的网站上设置浏览器缓存。问题是缓存仅适用于访客,而不是登录用户。我知道我可以根据用户的登录状态抛出不同的标题,但是缓存将如何处理呢?我会冒客人看到用户内容的风险吗?

更新

我要说的是,如果我为所有访客抛出一个最后修改的标题,并为所有登录用户强制一个新页面。我想这只会有很大帮助......如果所有客人都可以共享代理缓存并且所有成员都可以坚持使用新页面,我希望它,但我认为这不会奏效。

@Victor 和 @klausbyskov 的回复如何获得 +1,他们似乎在说相反的话。

【问题讨论】:

  • 这是一个广泛的讨论,动态页面的缓存?还是静态文件?或使用 php 生成像图像这样的静态内容?这是值得一读的东西-code.google.com/speed/page-speed/docs/caching.html(只要用户清除缓存或在浏览器中强制刷新,基本上缓存不会达到目的)
  • 为非登录用户添加标题cache-control max-age=xxx
  • @ajreal - 所以我应该包含must-validate 以防止登录用户的信息被存储在代理上,对吧?
  • 是的。可能为ExpiresPragmaCache-control 等添加元数据,用于代理缓存,不是那么简单

标签: php header http-headers cache-control


【解决方案1】:

缓存在浏览器中。因此访客无法看到用户的内容。

【讨论】:

  • 哎呀。我最初认为他的意思是服务器端缓存。这个答案是正确的。
  • 代理缓存怎么样?我是否可以只为访客缓存代理?
  • 访客有可能看到用户的内容:用户登录、访问 URL、注销、访客访问 URL 并看到用户的内容仍然存在于浏览器中缓存。这基本上使该网站在任何公共计算机上都不安全。
  • @Victor Nicollet,没有。因为唯一不会立即过期(并因此被放入缓存)的页面是呈现给未登录用户的页面。
  • @klausbyskov:如果访客页面被缓存,登录用户将看到访客页面的缓存版本。不像相反的情况那么严重,但仍然很烦人。
【解决方案2】:

缓存仅基于 URL 工作,因此如果您的用户和访客使用相同的 URL,缓存将以相同的方式影响两者(这意味着用户可能看不到最新数据)。因此,任何阻止浏览器查询您的服务器的缓存系统都会给您带来问题。

另一方面,您可以让服务器检测是否提供了与缓存相关的标头,确定访问者是访客还是登录用户,并以 304 Not Modified 响应访客。这仍然需要浏览器向您发送请求,但至少除了发送 304 标头之外,您无需进行任何服务器端工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    相关资源
    最近更新 更多