从网络文件共享提供文件时的浏览器缓存

时间:2012-12-30 04:05:26

标签: html http caching browser

据我了解,Web浏览器是否缓存项目取决于:

  1. 响应标头告诉浏览器执行的操作(例如Cache-ControlExpires)。
  2. 存在验证器(例如,ETag或Last-Modified标头)。
  3. 对于从网络文件共享提供的文件,这有何不同?在不同的浏览器?考虑这个JavaScript包括:

    <script type="text/javascript" src="\\SOMECOMPUTER\folder\file.js"></script>
    

    当涉及网络文件时,浏览器是否会遵守此meta标记?

    <META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 31 Dec 2011 11:12:01 GMT">
    

    我发现很少有关于这个主题的文档。

2 个答案:

答案 0 :(得分:4)

编辑:在实际进行更多测试后,您可以使用IE8,Firefox和Google访问该文件,假设已设置了相应的权限,对于之前的混淆感到抱歉。

现在它只是回到了它将缓存java脚本文件(或任何真正的)的问题,这是肯定的。所以这就是你如何解决这个问题:

Using <meta> tags to turn off caching in all browsers?(这似乎对我来说很好,所以看起来浏览器会像这样监听网络文件的元标记)

How to force IE to reload javascript?(这就像你如何通过将时间作为未使用的变量附加来避免缓存ajax调用一样)

答案 1 :(得分:1)

仅在通过HTTP协议发送文件时才考虑HTTP标头。文件访问(本地和网络共享)不通过HTTP,因此您无法使用此控制缓存。

HTML文件在<head>部分中包含带有元标记的缓存控件。因此,如果要控制.html文件的缓存,则可以执行此操作。遗憾的是,上面的.js文件并不正确,你无法通过这种方式控制js文件缓存。

我建议2个选项:

  • 设置一个小型HTTP服务器,并从那里获取.js文件 - 这样您就可以通过HTTP标头来控制缓存超时
  • 将您的JavaScript代码内嵌到HTML网页(在<script>...</script>代码中),并通过<meta>代码控制缓存。通过这种方式,您可以在<div src="\\server\cachedfile.html" \>中加载此文件 - 加载后甚至可以隐藏div。

我认为第二种选择更好,因为<meta>缓存控制更可靠,更可控。

相关问题