gpt4 book ai didi

html - 为什么浏览器不从缓存中加载 cdn 文件?

转载 作者:太空狗 更新时间:2023-10-29 14:19:22 24 4
gpt4 key购买 nike

这是一个非常简单的例子来说明我的问题,使用来自 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-ControlExpire,我的理解是浏览器将文件缓存到本地。

$ 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 是可能的.您需要创建一个文件,列出所有需要缓存的文件以供显式离线使用

关于html - 为什么浏览器不从缓存中加载 cdn 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29704811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com