在Javascript中,如何检查用户是否具有文件的缓存版本?

在Javascript中,如何检查用户是否具有文件的缓存版本?,javascript,jquery,caching,browser,Javascript,Jquery,Caching,Browser,可能重复: 我构建了一个自动加载程序,仅当javascript文件尚未在此页面上使用jquery加载时,才会加载该文件: $.getScript(); 我首先检查函数是否存在,如果不存在,则加载它们。然而,这还不能解释浏览器缓存,我希望我能找到解决方法 我想补充的一点是,看看用户是否已经将文件保存在浏览器缓存中。是否可以检查您服务器上的文件是否已缓存在用户浏览器上,以便我可以完全跳过对服务器的调用?缓存工作透明。如果您请求一个文件,并且该文件存在于用户的缓存中,则将使用缓存的文件,并且不会向

可能重复:

我构建了一个自动加载程序,仅当javascript文件尚未在此页面上使用jquery加载时,才会加载该文件:

$.getScript();
我首先检查函数是否存在,如果不存在,则加载它们。然而,这还不能解释浏览器缓存,我希望我能找到解决方法


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

缓存工作透明。如果您请求一个文件,并且该文件存在于用户的缓存中,则将使用缓存的文件,并且不会向服务器发出其他请求。浏览器会处理这个问题,所以您不必为您描述的案例担心

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

$.ajaxSetup({
  cache: true
});

缓存工作透明。如果您请求一个文件,并且该文件存在于用户的缓存中,则将使用缓存的文件,并且不会向服务器发出其他请求。浏览器会处理这个问题,所以您不必为您描述的案例担心

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

$.ajaxSetup({
  cache: true
});

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

至于检查您是否已经在页面中加载的方法,以避免在代码中再次加载,您可以执行多种操作

  • 在脚本加载时向元素或主体添加类,并检查类是否 在打新电话之前存在
  • 在脚本中设置一个变量标志,然后检查是否存在 打新电话
  • 在进行新调用之前,请检查脚本中是否存在函数

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

    至于检查您是否已经在页面中加载的方法,以避免在代码中再次加载,您可以执行多种操作

  • 在脚本加载时向元素或主体添加类,并检查类是否 在打新电话之前存在
  • 在脚本中设置一个变量标志,然后检查是否存在 打新电话
  • 在进行新调用之前,请检查脚本中是否存在函数

  • 如果它已经在浏览器缓存中,则除非您使用ETag管理缓存,否则在尝试加载它时不会访问服务器。对-它发出HTTP GET,但如果URL已经在缓存中,浏览器实际上不会执行任何网络操作。毕竟,这就是缓存的全部意义。检查问题,不是重复的,这是专门使用getScript的,并且getScript如何不缓存,除非函数被重新定义。如果它已经在浏览器缓存中,则除非您使用etags管理缓存,否则在尝试加载它时不会访问服务器。对-它发出HTTP GET,但是,如果URL已经在缓存中,浏览器实际上不会执行任何网络操作。毕竟,这就是缓存的全部要点。检查问题不是重复的,这是专门使用getScript的,除非重新定义函数,否则getScript不会缓存。事实并非如此。如果你调用getScript,它总是调用服务器来获取文件。这不起作用,但是在我能够制定适当的响应之前,我需要更彻底地测试它。谢谢你的帮助。稍后我会继续讨论更多信息。这个答案不起作用,使用getScript生成缓存的唯一方法是重新定义函数。您应该能够通过检查使用浏览器开发人员工具发出的请求来查看此信息。如果缓存被绕过,那么应该在脚本URL的末尾添加一些杂质,以确保它保持唯一性。如果请求的URL是一致的,并且缓存仍然没有被使用,那么可能存在缓存pragma或类似的问题。这是一篇非常古老的文章,您最好参考jQuery文档,它除了设置之外还提供了类似的解决方案:事实并非如此。如果你调用getScript,它总是调用服务器来获取文件。这不起作用,但是在我能够制定适当的响应之前,我需要更彻底地测试它。谢谢你的帮助。稍后我会继续讨论更多信息。这个答案不起作用,使用getScript生成缓存的唯一方法是重新定义函数。您应该能够通过检查使用浏览器开发人员工具发出的请求来查看此信息。如果缓存被绕过,那么应该在脚本URL的末尾添加一些杂质,以确保它保持唯一性。如果请求的URL是一致的,并且缓存仍然没有被使用,那么可能存在缓存pragma或类似的问题。这是一篇非常老的文章,您最好参考jQuery文档,除了设置之外,它还提供类似的解决方案: