我正在寻找一种以编程方式清空浏览器缓存的方法。我这样做是因为应用程序缓存了机密数据,我想在您按“注销”时删除这些数据。这将通过服务器或 JavaScript 发生。当然,仍然不鼓励在外国/公共计算机上使用该软件,因为有更多的危险,例如您无法在软件级别上击败的键盘记录器。
如何以编程方式清空浏览器缓存?
有没有办法浏览器会让你清除缓存。如果可能的话,这将是一个巨大的安全问题。这很容易被滥用 - 浏览器支持这种“功能”的那一刻就是我从计算机上卸载它的那一刻。
您可以做的是通过发送适当的标头或使用这些元标记来告诉它不要缓存您的页面:
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
您可能还想考虑关闭表单字段的自动完成功能,尽管我担心有一种标准的方法可以做到这一点(请参阅此问题)。
无论如何,我想指出的是,如果您正在处理敏感数据,则应该使用 SSL。如果您不使用 SSL,任何有权访问网络的人都可以嗅探网络流量并轻松查看您的用户所看到的内容。
除非明确告知,否则使用 SSL 还会使某些浏览器不使用缓存。看到这个问题。
有可能,您可以简单地使用 jQuery 替换引用缓存状态的“元标记”与事件处理程序/按钮,然后刷新,简单,
$('.button').click(function() {
$.ajax({
url: "",
context: document.body,
success: function(s,x){
$('html[manifest=saveappoffline.appcache]').attr('content', '');
$(this).html(s);
}
});
});
注意:此解决方案依赖于作为 HTML 5 规范的一部分实现的应用程序缓存。它还需要服务器配置来设置应用程序缓存清单。它没有描述一种可以通过客户端或服务器端代码清除“传统”浏览器缓存的方法,这几乎是不可能的。
使用 html 本身。有一个技巧可以使用。技巧是将参数/字符串附加到脚本标记中的文件名,并在文件更改时更改它。
<script src="myfile.js?version=1.0.0"></script>
浏览器将整个字符串解释为文件路径,即使在“?”之后是什么。是参数。所以现在发生的是,下次更新文件时,只需更改网站上脚本标记中的数字(示例<script src="myfile.js?version=1.0.1"></script>
),每个用户浏览器都会看到文件已更改并获取新副本。
最好的想法是用名称+一些带有版本的散列生成js文件,如果您确实需要清除缓存,只需使用新的散列生成新文件,这将触发浏览器加载新文件
最初,我在我的 html、JS 中尝试了各种编程方法来清除浏览器缓存。在最新的 Chrome 上没有任何效果。
最后,我得到了 .htaccess:
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
在 Chrome、Firefox、Opera 中测试