假设您有资源,可以是图像,也可以是CDN中的jQuery。此资源托管在某些第三方URL上,例如https://example-cdn.com/resource.ext
。我们还假设它是可缓存的(无论什么意思,请让我知道这是否是一个重要的细节)。
[https://website-a.com
请求资源时(假设直接将其包含在html中),需要花费一些时间来加载,但是随后浏览器会对其进行缓存以便下次更快地加载。
现在,https://website-b.com
还使用完全相同的url(https://example-cdn.com/resource.ext
)在其html中包含该资源。
我的问题是:是浏览器将访问缓存的资源(因为在加载https://website-a.com
时已经获取了该资源),还是由于某些原因而无法在缓存中找到它,并且必须再次通过网络加载它?
Edit:这个stackexchange答案似乎包含一些相关信息。任何人都可以在所有有关缓存的断言中验证该答案是否正确吗? https://webmasters.stackexchange.com/a/84685
是,将缓存资源。
这是基于HTTP和URL的语义。 URL是通用资源位置:它以可以在任何地方使用的格式提供资源的位置,并且始终指示相同的资源:在不同网站的<a>
元素中,在名片上,在广告海报上。 HTTP客户端(Web浏览器)知道一个网站使用的URL引用相同的资源(如果在其他网站上使用的话),因此可以安全地重用缓存的副本。
这是一个例外,当URL是相对URL时(您的示例使用绝对URL)。要使用相对URL,客户端必须使用某些context resolve URL来生成绝对URL。不同的网站具有不同的上下文,因此解析为不同的绝对URL。这是客户端必须用来获取资源的绝对URL,并且它是其缓存中的键。