这是一个非常简单的例子来说明我使用CDN中的
JQuery修改页面的问题:
<html> <body> <p>Hello Dean!</p> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script>$("p").html("Hello,Gabe!")</script> </body> </html>
当您使用互联网连接加载此页面时,页面将显示“Hello Gabe”.当我关闭互联网连接时,页面显示“Hello Dean”并显示错误 – JQuery不可用.
我的理解是CDN在头响应中有一个很长的Cache-Control和Expire,我理解这意味着浏览器在本地缓存文件.
$curl -s -D - https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js | head HTTP/1.1 200 OK Server: cloudflare-Nginx Date: Fri,17 Apr 2015 16:30:33 GMT Content-Type: application/javascript Transfer-Encoding: chunked Connection: keep-alive Last-Modified: Thu,18 Dec 2014 17:00:38 GMT Expires: Wed,06 Apr 2016 16:30:33 GMT Cache-Control: public,max-age=30672000
但这似乎并没有发生.有人可以解释一下发生了什么吗?另外 – 我怎样才能让浏览器在某个地方的缓存中使用JQuery的副本?
出现这个问题是因为我们希望使用CDN来服务外部库,但也希望能够离线开发页面 – 就像在飞机上一样.
我使用Chrome和Firefox获得了类似的行为.
解决方法
没有什么可以处理CDN.当浏览器遇到脚本标记时,它会向服务器请求它,无论它是托管在CDN上还是托管在服务器上.如果浏览器先前加载了它,则在同一地址上,服务器会告诉它是否应该重新加载(发送
304 HTTP status code).
您可能正在寻找的是缓存您的应用程序以供离线使用.这可能是HTML5 cache manifest file.您需要创建一个文件,列出需要缓存的所有文件以供显式脱机使用