如何检查jQuery是否已经在缓存中?

无论如何检查客户端是否从CDN加载jQuery? 我的意思是拥有这样的代码:

if (jQuery.isLoadedFromCDN) //DoNothing else //load from internal resource 

请注意,我不想检查jQuery是否已加载,但特别是如果它是从CDN加载的。

上下文是我有一个使用jQuery的内部局域网w​​eb应用程序,从局域网加载jQuery肯定更快,但如果它之前已经从CDN下载(可能就是这种情况)那么我只想使用其他我想要的从我们的内部资源而不是cdn获取它。 带宽节省绝对不是很大,但我更想知道这是否在技术上是可行的。

我猜你在检查jQuery是否是从Google Libraries API加载的?

您的浏览器将缓存jQuery,无论是来自CDN还是来自您的LAN。 如果它已经从之前从CDN中检索到的缓存中,它的加载速度将快于LAN。 如果您之前访问过您的网站或使用相同CDN的其他网站尚未在您的缓存中,则只需加载一次:后续访问将从缓存加载。

在CDN和LAN之间拆分jQuery的URL只会导致两个副本被缓存。 让浏览器缓存执行它的目的。 🙂

这应该这样做:

   

您需要调整后备路径,该路径应位于您的域中。

据我所知,这是不可能的。 但有两件事可以帮助您:

  1. 使用Etags :在Web服务器端识别您的资源。 通过这种方式,您的浏览器可以帮助您:确定资源是否已加载,无论加载的域是什么
  2. 如果你真的想知道从哪个域加载jQuery,你可以做虚拟的AJAX请求。 您只能从加载库的同一域中执行AJAX请求(执行JSONP请求时除外)。 因此,如果您的jQuery是从LAN资源加载的,那么您将获得对您的LAN网络服务器的AJAX请求,并排除CDN。

希望能帮助到你,

巴特