5

据我了解,一个项目是否被网络浏览器缓存取决于:

  1. 响应头告诉浏览器做什么(例如,Cache-ControlExpires)。
  2. 验证器的存在(例如,ETag 或 Last-Modified 标头)。

这对于从网络文件共享提供的文件有何不同?跨不同的浏览器?考虑这个 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">

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

4

2 回答 2

4

编辑:在实际做了更多测试之后,假设设置了正确的权限,您可以使用 IE8、Firefox 和 Google 以这种方式访问​​文件,抱歉之前的混淆。

现在回到它是否会缓存 java-script 文件(或任何真正的文件)的问题,这是肯定的。所以这里是你可以解决的方法:

使用 <meta> 标签关闭所有浏览器中的缓存?(这对我来说似乎很好,所以浏览器似乎会监听这样的网络文件的元标记)

如何强制 IE 重新加载 javascript?(这就像您通过将时间作为未使用的变量附加到它来避免缓存 ajax 调用一样)

于 2013-01-09T18:02:25.740 回答
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>缓存控制更可靠,更可控。

于 2013-01-10T15:11:18.650 回答