0

可能重复:
如何检测 XHR 何时返回缓存资源?

我构建了一个自动加载器,如果它尚未使用 jquery 加载到此页面上,则仅加载一个 javascript 文件:

$.getScript();

我首先检查函数是否存在,如果不存在,我会加载它们。但是,这无法解释浏览器缓存,我希望我能够弄清楚如何。

我想添加的一件事是查看用户是否已经将文件保存在浏览器缓存中。是否可以检查来自您服务器的文件是否已经缓存在用户浏览器上,以便我可以完全跳过对服务器的调用?

4

2 回答 2

3

缓存透明地工作。如果您请求一个文件并且该文件存在于用户的缓存中,则将使用缓存的文件,并且不会向服务器发出额外的请求。浏览器会处理这个问题,因此您不必担心您所描述的情况。

.getScript默认情况下使用带时间戳的查询参数禁用此功能,因此您只需禁用缓存绕过,它getScript使用:

$.ajaxSetup({
  cache: true
});
于 2012-10-14T13:46:26.827 回答
1

当请求发出时,浏览器将根据文件是否已经在缓存中来确定是否从服务器检索。jQuery 会添加一个时间戳,因此每次都会加载一个新版本。这可以通过设置关闭cache:true

至于检查您是否已经在页面中加载以免在代码中再次加载它的方法,您可以做很多事情。

  1. Add a class to element or body when script loads and check if class exists before making a new call.
  2. Set a variable flag withing the script and check for existence before making new call
  3. Check if a function within the script exists before making a new call
于 2012-10-14T13:50:22.940 回答