问题定义:
问题: JQuery库对于这种缓慢的连接来说太大了,但是一次性下载是可以接受的。但是,我们不希望客户端在每次连接到每个新服务器时都下载它。所有这些设备上的JQuery都是一样的。但显然浏览器缓存是基于域的。我们如何缓存JQuery库,以便客户端每次连接到新服务器时都不必下载JQuery?
答案 0 :(得分:1)
只需在一个地方链接到它......
例如,如果您要将单个服务器http://1.2.3.4/指定为CDN,请在其上添加jQuery,并使用<script src="http://1.2.3.4/jquery.min.js"></script>
答案 1 :(得分:1)
您可以将其链接到链接标记中的IP。服务器不必访问该访问权限或任何内容,因此所有客户端都将始终从同一服务器访问jquery,因此它被缓存。
答案 2 :(得分:0)
以下是一个简单的解决方案:您的所有客户都必须编辑他们的/etc/hosts
文件(Google可以在Windows上找到它)并在其配置中添加如下所示的行:
1.2.3.4 jquery-from-closest-server.com
每个客户端必须找出最近的具有jQuery的服务器,并将1.2.3.4
替换为其IP地址。
在HTML代码中,请始终使用链接http://jquery-from-closest-server.com/jquery.js
为安全起见,您可能希望为有互联网访问权限的客户注册jquery-from-closest-server.com
。
当浏览器要求提供该文件时,它将使用/etc/hosts
来解析该IP地址。由于所有嵌入式设备的域名都是相同的(浏览器会忽略IP地址的更改),因此脚本将为所有客户端下载一次。
请注意,这意味着您永远无法升级到更新版本的jQuery。问题是您必须同时在所有嵌入式设备上更换它,因为无法告知客户从哪台服务器下载它。
如果这让您感到困扰(并且在您发现第一个严重错误后大约四个月内),这是另一种解决方案:不是从嵌入式设备提供HTML,而是分发静态Web应用程序(一组HTML文件)和JavaScript)哪个客户可以在他们的桌面上安装。使用AJAX和iframe
将静态Web应用程序的某些部分替换为嵌入式设备中的数据。
优点:
[编辑] PS:考虑用gzip压缩jQuery。这会留下33KB的文件。所有HTML5浏览器都可以解码压缩文件,您只需通过设置必要的HTTP标头来告诉它们。
答案 3 :(得分:0)
显然没有标准方法可以在我们的项目中包含JQuery,所以我们选择用较小的类似库替换JQuery。这些是选项: