Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何以编程方式清空浏览器缓存?_Javascript_Html_Caching_Browser - Fatal编程技术网

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

Javascript 如何以编程方式清空浏览器缓存?,javascript,html,caching,browser,Javascript,Html,Caching,Browser,我正在寻找一种以编程方式清空浏览器缓存的方法。我这样做是因为应用程序缓存机密数据,我希望在您按“注销”时删除这些数据。这可以通过服务器或JavaScript实现。当然,在外国/公共计算机上使用该软件仍然是不被鼓励的,因为还有更多的危险,比如你在软件层面上无法战胜的钥匙记录器。浏览器无法让你清除其缓存。如果可能的话,这将是一个巨大的安全问题。这很容易被滥用——浏览器支持这种“功能”的那一刻就是我从计算机上卸载它的那一刻 您可以通过发送适当的标题或使用以下元标记来告诉它不要缓存页面: <met

我正在寻找一种以编程方式清空浏览器缓存的方法。我这样做是因为应用程序缓存机密数据,我希望在您按“注销”时删除这些数据。这可以通过服务器或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还使一些浏览器不使用缓存,除非明确要求使用。请参阅。

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

您可以通过发送适当的标题或使用以下元标记来告诉它不要缓存页面:

<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);
        }
    }); 
});

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

有可能,您只需使用jQuery将引用缓存状态的“元标记”替换为事件处理程序/按钮,然后轻松刷新

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

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

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

在Chrome上,您应该能够使用基准测试扩展来实现这一点。您需要使用以下开关启动chrome:

./chrome --enable-benchmarking --enable-net-benchmarking 
现在,在Chrome的控制台中,您可以执行以下操作:

chrome.benchmarking.clearCache();
chrome.benchmarking.clearHostResolverCache();
chrome.benchmarking.clearPredictorCache();
chrome.benchmarking.closeConnections();

从上面的命令可以看出,它不仅清除浏览器缓存,还清除DNS缓存并关闭网络连接。当您进行页面加载时间基准测试时,这些都非常好。显然,如果不需要,您不必全部使用它们(例如,如果您只需要清除缓存,而不关心DNS缓存和连接,则clearCache()就足够了)。

在Chrome上,您应该能够使用基准测试扩展来实现这一点。您需要使用以下开关启动chrome:

./chrome --enable-benchmarking --enable-net-benchmarking 
现在,在Chrome的控制台中,您可以执行以下操作:

chrome.benchmarking.clearCache();
chrome.benchmarking.clearHostResolverCache();
chrome.benchmarking.clearPredictorCache();
chrome.benchmarking.closeConnections();

从上面的命令可以看出,它不仅清除浏览器缓存,还清除DNS缓存并关闭网络连接。当您进行页面加载时间基准测试时,这些都非常好。显然,如果不需要,您不必全部使用它们(例如,如果您只需要清除缓存,而不关心DNS缓存和连接,则clearCache()就足够了)。

最好的办法是使用名称生成js文件+使用版本生成一些哈希,如果您确实需要清除缓存,只需使用新哈希生成新文件即可,这将触发浏览器加载新文件

最好的方法是使用名称生成js文件+使用版本生成一些散列,如果确实需要清除缓存,只需使用新散列生成新文件,这将触发浏览器加载新文件

使用html本身。有一个技巧可以使用。这个技巧是在脚本标记中的文件名中附加一个参数/字符串,并在文件更改时对其进行更改


浏览器将整个字符串解释为文件路径,即使“?”后面的是参数。现在发生的事情是,下次更新文件时,只需更改网站上脚本标记中的数字(例如
)每个用户浏览器都会看到文件已更改并获取一个新副本。

使用html本身。有一个技巧可以使用。这个技巧是在脚本标记中的文件名中附加一个参数/字符串,并在文件更改时对其进行更改


浏览器将整个字符串解释为文件路径,即使“?”后面的是参数。现在发生的事情是,下次更新文件时,只需更改网站上脚本标记中的编号(例如
),每个用户浏览器都会看到文件已更改并获取一个新副本。

想象一下
.js
文件放置在
/my site/some/path/ui/js/myfile.js

因此,通常脚本标记看起来像:

<script src="/my-site/some/path/ui/js/myfile.js"></script>
所以这就是,它有点
<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>
let id = "your-cache-id";
// you can find the id by going to 
// application>storage>cache storage 
// (minus the page url at the end)
// in your chrome developer console 

caches.open(id)
.then(cache => cache.keys()
  .then(keys => {
    for (let key of keys) {
      cache.delete(key)
    }
  }));
caches.keys().then((keyList) => Promise.all(keyList.map((key) => caches.delete(key))))
Clear-Site-Data: "cache", "cookies", "storage"