当我们的负责人告诉我们将CDN用于外部库而不是将它们包含在编译+压缩过程中并将它们从支持缓存的nginx设置中移除时,我们目前正在对我们的Web项目进行优化
他的假设是,如果用户访问example.com
使用CDN版本的jQuery,那么jQuery会被缓存。如果用户碰巧访问example2.com
并且碰巧使用相同的CDN&#jed ,则jQuery将从缓存而不是通过网络加载。
所以我的问题是:域名实际上是否共享其缓存?
我认为,即使浏览器可以共享缓存,问题在于我们假设以前的网站使用来自同一个CDN的相同的CDN&#ed文件。使用相同的CDN文件进入用户浏览网站的可能性有多大?他说要用最大的CDN来增加机会。
因此,后续问题将是:如果浏览器确实共享缓存,是否值得根据他的假设进行优化?
我查找了有关CDN的主题,但我没有发现这个"共享域缓存"或以这种方式使用CDN。
答案 0 :(得分:2)
你的领导是正确的,这是基本的HTTP。 您所做的只是向客户端指示它可以找到该文件的位置。 然后,客户端根据其缓存规则处理向CDN发送请求。
但是你不应该过度使用CDN用于库,请记住,如果你需要特定版本的库,特别是旧版本的库,你将不会因为版本碎片而获得更多的缓存命中。 对于像jQuery这样广泛使用和繁重的库,你想要推荐它的最新版本。
如果你可以从同一个CDN中取得所有这些(尤其是:Google),尤其是http2 is coming。
此外,它们可以节省您的带宽,当您拥有高流量负载时可以节省很多带宽,并且可以减少远离您的服务器的用户的加载时间(Google非常适合这一点)。