如何检查浏览器缓存是否已禁用

有没有办法在Javascript或C#中告诉某人正在使用的浏览器是否禁用了静态内容的缓存?

我需要能够测试浏览器是否针对缓存进行了优化。

UPDATE

我对问题做了一些调查,你可以在我最近的post中找到更详细的答案注意,下面描述的解决方案(最初)不是跨浏览器解决方案。

不确定它是否有帮助,但您可以尝试以下技巧:1。向您的页面添加一些资源,假设它将是javascript文件cachedetect.js 。 2.每次有人请求时,服务器都应生成cachedetect.js 。 并且它应该包含响应中与缓存相关的标头,即如果启用了浏览器的缓存,则应该长时间缓存资源。 每个cachedetect.js应如下所示:

 var version = [incrementally generated number here]; var cacheEnabled; //will contain the result of our check var cloneCallback;//function which will compare versions from two javascript files function isCacheEnabled(){ if(!window.cloneCallback){ var currentVersion = version;//cache current version of the file // request the same cachedetect.js by adding  

之后,您可以在一段时间后检查cacheEnabled === truecacheEnabled === false

我相信这应该有用 : http : //jsfiddle.net/pseudosavant/U2hdy/

基本上你必须预先加载一个文件并检查它花了多长时间。 第二次应该不到10毫秒(在我自己的测试中)。 您需要确保您正在测试的文件足够大,以至于需要一点点下载,但它不一定非常大。

 var preloadFile = function(url){ var start = +new Date(); var file = document.createElement("img"); file.src = url; return +new Date() - start; }; var testFile = "http://sofzh.miximages.com/c%23/2000px-Mozilla_logo.svg.png" var timing = []; timing.push(preloadFile(testFile)); timing.push(preloadFile(testFile)); caching = (timing[1] < 10); // Timing[1] should be less than 10ms if caching is enabled 

另一种涉及客户端和服务器的方法。

  1. 调用页面/端点,这将在响应中设置随机唯一ID。 设置此页面/端点的缓存标头
  2. 再次拨打同一个电话,这将设置不同的唯一号码
  3. 如果数字匹配则来自缓存或来自服务器