如何以编程方式清空浏览器缓存?

2022-08-30 03:02:08

我正在寻找一种以编程方式清空浏览器缓存的方法。我这样做是因为应用程序缓存了机密数据,当您按“注销”时,我想删除这些数据。这将通过服务器或JavaScript发生。当然,仍然不鼓励在国外/公共计算机上使用该软件,因为还有更多危险,例如键盘记录器,您无法在软件级别上击败。


答案 1

浏览器不会让您清除其缓存。如果可能的话,这将是一个巨大的安全问题。这很容易被滥用 - 浏览器支持这种“功能”的那一刻将是我从计算机中卸载它的那一刻。

您可以做的是告诉它不要缓存您的页面,通过发送适当的标头或使用这些元标记:

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>

您可能还需要考虑关闭表单字段的自动完成功能,尽管恐怕有一种标准的方法可以做到这一点(请参阅此问题)。

无论如何,我想指出,如果您正在处理敏感数据,则应使用SSL。如果您没有使用 SSL,则有权访问网络的任何人都可以嗅探网络流量并轻松查看用户正在查看的内容。

使用SSL还使某些浏览器不使用缓存,除非明确告知。请参阅此问题


答案 2

这是可能的,你可以简单地使用jQuery来替换引用缓存状态的“meta标签”与事件处理程序/按钮,然后刷新,容易,

$('.button').click(function() {
    $.ajax({
        url: "",
        context: document.body,
        success: function(s,x){

            $('html[manifest=saveappoffline.appcache]').attr('content', '');
                $(this).html(s);
        }
    }); 
});

注意:此解决方案依赖于作为 HTML 5 规范的一部分实现的应用程序缓存。它还需要服务器配置来设置应用程序缓存清单。它没有描述一种方法,通过这种方法可以通过客户端或服务器端代码清除“传统”浏览器缓存,这几乎是不可能的。