有和没有 "latest" 的 JSDelivr URL 的区别

Difference in JSDelivr URL with & without "latest"

我去 GitHub issues 提出支持票,但想先问这个问题以避免噪音。

这就是 docs 所说的-

Omit the version completely or use "latest" to load the latest one (not recommended for production usage):

/npm/jquery@latest/dist/jquery.min.js
/npm/jquery/dist/jquery.min.js

根据文档,我们可以 latest 或完全省略它以加载最新版本。但我看到了不同-

加上 latest (URL 1 - U1)

示例- https://cdn.jsdelivr.net/npm/@letscooee/web-sdk@latest/dist/sdk.min.js

它加载缓存 24 小时的最后发布版本。这意味着如果我们在 24 小时内发布 v2 和 v3,上面的 URL 仍然会显示 v1.

缓存周期为1周。

没有 latest (URL 2 - U2)

示例- https://cdn.jsdelivr.net/npm/@letscooee/web-sdk/dist/sdk.min.js

虽然我们完全省略了 latest,但这会立即加载最新版本,即 v3,缓存期也是 1 周。

我已根据他们的文档请求清除 API,但我认为此行为不符合他们的文档。

试图 Google 原因并阅读了他们的文档 3 遍。我错过了什么吗?

编辑 1

看完马丁的回答后,我做了以下事情-

(要查看图像,请在新选项卡中打开它们并删除 .png 之前的 t

Step Taken @ Time U1 U2
Purge Cache 12:39:00 UTC Purged Purged
See Age Header @ 12:40 UTC 0 0
See Date Header @ 12:40 UTC Sun, 12 Sep 2021 12:40:25 GMT Sun, 12 Sep 2021 12:40:31 GMT
Headers 12:41:00 UTC
Result 12:41:00 UTC Points to latest release 0.0.3 Points to latest release 0.0.3
Publish new NPM release 0.0.4 12:48:00 UTC
Refresh both the URLs 12:49:00 UTC Shows old release 0.0.3 Shows latest release 0.0.4

最后一步说明我这里错了。根据文档

,这按预期工作(即仅显示 0.0.3)

在我看来,这两个链接都指向同一个 sdk URL。 根据 cdns 的工作方式,例如提及 sdk 的版本:

<script src="https://unpkg.com/three@0.126.0/examples/js/loaders/GLTFLoader.js"></script>

或按照以下方式始终指向最新版本的 sdk:

<script src="https://cdn.rawgit.com/mrdoob/three.js/master/examples/js/loaders/GLTFLoader.js"></script>

两种情况下的缓存时间相同 - CDN 级别为 12 小时,浏览器级别为 7 天:cache-control: public, max-age=604800, s-maxage=43200

这并不一定意味着 URL 将始终 return 相同的内容,因为 CDN 和您的浏览器都会根据时间独立计算每个 URL 的过期时间它是第一个检索到的,因此 CDN 可能会在发布后最多 12 小时内提供不同的版本。