【问题标题】:Google Chrome does not honor cache-policy in page header if the page is displayed in a FRAME如果页面显示在 FRAME 中,谷歌浏览器不支持页面标题中的缓存策略
【发布时间】:2011-02-17 09:39:55
【问题描述】:

不管我做什么:

<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="Fri, 30 Apr 2010 11:12:01 GMT" />
<meta http-equiv="Expires" content="0" />
<HTTP-EQUIV="PRAGMA" CONTENT="NO-STORE" />

如果页面显示在框架中,Google Chrome 不会根据页面的内部缓存策略重新加载任何页面。就好像元标记甚至不存在一样。谷歌浏览器似乎忽略了这些标签。

由于我在其他论坛上得到了这个问题的答案,其中回复的人忽略了操作条件,我将重复一遍:当页面显示在框架中时会发生这种行为

我使用的是最新发布的版本,并已升级到 5.0.375.29 测试版,但两个版本的行为相同。

是否有人愿意以一种或另一种方式确认您使用框架集看到的行为以及元标记中给出的缓存/过期策略?

谢谢

【问题讨论】:

    标签: google-chrome meta-tags cache-control content-expiration


    【解决方案1】:

    您是否在框架文档和父/托管文档中都尝试了这些元标记?

    【讨论】:

    • 是的,过期策略在框架集文档和内容文档中也是如此。带有框架集声明 ttp://www.w3.org/TR/html4/frameset.dtd" rel="nofollow" target="_blank">w3.org/TR/html4/frameset.dtd"> 的文档确实会重新加载。 Chrome 审核指出框架集页面“明确不可缓存。如果可能,请考虑将 [it] 设为可缓存”。内容文档永远不会重新加载。我第一次在 Chrome 中加载它们时,它们没有控制其过期的元标记。尽管我已经添加了这些标签并重新上传,但 Chrome 似乎已经永久缓存了它们。
    • 我明白了。我能想到解决这个问题的唯一方法可能是一个没有吸引力的方法:在你的框架 SRC 上指定一个参数来打破缓存:iframe src="document.html?x=new"。或者,如果您有幸使用诸如 asp.net 之类的服务器端脚本 ?t= 文档将忽略该参数,但 chrome 会将其视为不同的 URL。但我意识到这并不吸引人的原因有很多。
    • 谢谢。我回去硬编码了一个参数来强制重新加载。尽管参数不会因为它是硬编码而改变,但 Chrome 现在正在遵守元标记中的策略。所以显然不受欢迎的行为是这样的:如果页面第一次加载时没有缓存/过期策略,Chrome 将继续缓存它,即使稍后将这样的策略添加到页面。如果页面没有以任何开头,则 Chrome 不会查找策略,或者 NULL 或 UNDEFINED 原始到期日期以某种方式混淆了与新到期日期的比较。
    • 它必须从服务器获取文件才能看到新的元标记,这会破坏缓存的概念,对吗?似乎除了现在的工作方式之外别无他法?
    • 此外,这个问题可能只影响不久前首次加载到 Chrome 中的文档;也许缺少到期日期现在的存储方式与以前不同。对今天创建的文档进行的测试表明,Chrome 尊重元标记。
    猜你喜欢
    • 2012-06-19
    • 2014-01-31
    • 2018-02-17
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2014-05-26
    • 2013-12-04
    • 1970-01-01
    相关资源
    最近更新 更多