如何防止html5页面缓存?

gps*_*s03 29 html5 caching

我将一个简单的vanilla HTML页面转换为具有响应式布局的HMTL5/CSS3,并且出于安全原因(由安全人员指示),页面必须永远不会缓存.

以前使用的页面<meta http-equiv="Pragma" content="no-cache">,<meta http-equiv="Expires" content="-1">以防止页面被缓存.

在HTML5中取代了什么?你如何防止html页面在客户端缓存?

我花了一个星期阅读有关清单文件的内容,但它们似乎与我想要的完全相反,因为附加清单文件显式导致它所附加的页面缓存.

请不要参考我回W3C定义这些meta元素现在允许-据我所知,HTML5不包括cache-controlPragmameta元素.

我需要知道它包含什么会阻止页面被缓存.

n1c*_*las 35

在代码的开头,你需要使用这个:

<!DOCTYPE html>
<html manifest="manifest.appcache">
...
Run Code Online (Sandbox Code Playgroud)

然后manifest.appcache用这样的内容创建:

CACHE MANIFEST

# Cache manifest version 1.0

# no cache

NETWORK:
*

  • 此功能已从Web标准中删除.虽然有些浏览器可能仍然支持它,但它正在被删除.避免使用它并尽可能更新现有代码; 请参阅本页底部的兼容性表,以指导您的决定.请注意,此功能可能随时停止运行.https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache (4认同)
  • 要添加到@ n1ckolas答案,请查看http://www.w3.org/TR/html5/browsers.html#manifests了解具体信息. (3认同)
  • 谢谢,这可以防止文件被缓存,但现在它会在 Firefox 中弹出一个信息栏,指出:“此网站要求在您的计算机上存储数据以供离线使用。” 这又与我想要发生的事情完全相反。这非常烦人,而且对于我们的新手用户来说不太友好——我们迎合了不太懂互联网的医疗保健专业人员。不管怎样,要保留清单并放弃信息栏,还是这就是 Firefox 的方式? (2认同)

Dan*_*yon 5

我非常不喜欢应用程序缓存。它几乎运作良好,但可能会带来真正的难以忍受的痛苦。在进行一些代码重构时,我意识到注销后,我可以浏览回最后一页。当然,刷新浏览器会强制用户重新登录,但这不是我们所希望的。

在四处搜寻并看到选项后,我开始感到有点沮丧。我不想使用应用程序缓存。然后我意识到我的代码在销毁会话后重定向到登录页面,并想到了一个想法,如果我重定向到主页怎么办?瞧,页面已加载,会话已检查(当然不存在),用户重定向到登录。问题解决了。


小智 5

我已经为同样的问题苦苦挣扎了很长一段时间。对我有用的 - 至少到目前为止 - 在 Chrome、FF 和 IE 中执行以下操作:

1)引用清单文件<html lang="nl" manifest="filename.appcache">据我了解,这将缓存此 HTML 文档中后续的所有内容,因此需要一个清单文件防止这种情况发生:

2)使用清单文件 filename.appcache ,其内容如下:对于所有文件,不要从缓存中读取,而是从网络服务器中读取:

CACHE MANIFEST
# 2015-09-25 time 20:33 UTC v 1.01 
NETWORK:
*
Run Code Online (Sandbox Code Playgroud)


3) 需要第三步:每次上传网站的(部分)更新时,还可以通过更改注释(#)行中的日期和时间戳来更改清单文件。为什么?因为如果不更改清单文件,则不会读取该文件,并且会默认执行步骤 1,从而进行缓存并从缓存中读取。然而,清单文件改变的事实强制再次读取清单文件,从而强制再次应用其中的“不从缓存读取而是从网络服务器读取”指令。