我将普通的HTML页面转换为具有响应式布局的HMTL5 / CSS3,并且出于安全原因(由安全人员指示),该页面绝不能缓存。
该页面以前使用和来防止该页面被缓存。
用什么替代HTML5?
如何防止html页面在客户端缓存?
我已经花了一个星期的时间来阅读清单文件,但是它们似乎与我想要的完全相反,因为清单文件显式附加会导致将其附加到的页面缓存。
而且,请不要再回过头来看看现在允许使用哪些meta元素的w3c定义-我知道HTML5在meta元素中不包含cache-control或Pragma。
我需要知道它包含哪些内容,以防止页面被缓存。
好吧,您可以使用实际的http标头代替假的html标头。 mnot.net/cache_docs
在代码的开头,您需要使用以下代码:
...
然后使用以下内容创建manifest.appcache:
CACHE MANIFEST
# Cache manifest version 1.0
# no cache
NETWORK:
*
要添加到@ n1ckolas答案中,请查看w3.org/TR/html5/browsers.html#manifests了解详细信息。
谢谢,可以阻止文件缓存的工作,但是现在它在Firefox中弹出一个信息栏,指出:"此网站要求将数据存储在计算机上以供离线使用。"再次与我想发生的事情完全相反。非常烦人,对于我们的新手用户不会太用户友好-我们迎合了不懂Internet的医疗保健专业人员。无论如何要保留清单并抛弃信息栏,或者这只是使用Firefox的方式吗?
我实际上不确定...您可以将其移动到单独的问题中,很高兴看到答案:)
实际上,这不起作用。唯一可行的原因是,该代码示例格式错误。香港专业教育学院因为更新了答案,所以它不再正常工作。由于旧答案缺少冒号,因此浏览器尝试缓存名为CACHE,NETWORK和*的文件。当它尝试下载site.com*时失败,因此它永远无法下载所有内容并认为该应用程序已成功缓存。上面的更正代码无法正常工作的原因是,带有清单的html页面始终默认情况下会被缓存。这就是appcache的工作方式。
一个等效的解决方案是引用一个不存在的清单文件:,但这将在chrome开发人员工具的控制台中显示。
如果您在阅读我的评论之前尝试了上述操作,您会发现现在页面已被很好地缓存,以致刷新按钮不起作用。 (这是应可脱机使用的应用程序的功能。)要使您的页面不被卡住,请清除浏览器缓存。在chrome中,需要清除的是" Cookie以及其他网站和插件数据"。
此功能已从Web标准中删除。尽管某些浏览器可能仍支持它,但是它正在被删除。避免使用它,并尽可能更新现有代码;请参阅此页面底部的兼容性表以指导您做出决定。请注意,此功能可能随时停止起作用。 developer.mozilla.org/zh-CN/docs/Web/HTML/
我一直在同一个问题上苦苦挣扎。至少到目前为止,在Chrome,FF和IE中对我有效的方法是:
1)引用清单文件据我了解,这将缓存此HTML文档中的所有内容,因此需要清单文件来防止这种情况的发生:
2)使用清单文件filename.appcache并具有以下内容,该内容基本上表示:对于所有文件,请不要从缓存中读取,而要从网络服务器中读取:
CACHE MANIFEST
# 2015-09-25 time 20:33 UTC v 1.01
NETWORK:
*
3)需要执行第三步:每次您上传网站的(部分)更新时,还可以通过更改comment(#)行中的日期和时间戳来更改清单文件。为什么?因为如果您不更改清单文件,则将不会读取该清单文件,并且它将默认执行步骤1,从而进行缓存并从缓存中读取。但是,清单文件被更改的事实迫使清单文件再次被读取,从而强制执行其中的"不从缓存中读取而是从网络服务器读取"指令。
我非常不喜欢appcache。它几乎可以很好地工作,但可能是真正的宽容之痛。在进行一些代码重构时,我意识到注销后,我可以浏览回最后一页。当然,刷新浏览器会迫使用户重新登录,但这不是必需的。
在四处寻找并看到选项后,我开始感到有些沮丧。我不想使用appcache。然后,我意识到我的代码在破坏了会话之后将重定向到登录页面,并且有了一个主意,如果我改为重定向到主页怎么办?瞧,页面已加载,会话已检查(当然不存在),用户重定向到登录。问题解决了。
先前的答案可能无法始终如一地用于防止缓存或清除chrome中的现有缓存,但可以解决。
1)要清除chrome中的现有缓存,可能需要在清除chrome中的现有缓存之前,更新网站的所有文件(例如,通过链接到每个页面上的新css文件)以及缓存清单的更新页面的第二次访问(由于呈现页面的方式的"流程":第一次访问页面时,浏览器读取并缓存清单,同时继续从现有缓存中加载。仅当第二次访问,将读取并应用新存储的更新清单。
2),如果上述方法均无济于事,则可以在清单文件本身中包含脚本以检查是否有新清单,如果找到,请重新加载该脚本并使用新清单。这可以解决问题,并解决了我测试过的所有其余情况,这些情况是文件在chrome中被持久地缓存。我在Jason Stimpel的本页上找到了此脚本。
window.addEventListener('load', function (e) {
window.applicationCache.addEventListener('updateready', function (e) {
window.location.reload();
}, false);
}, false);