预加载CDN缓存的文件

时间:2019-09-19 03:56:20

标签: javascript html caching cdn preload

我有一个缓存在某些CDN中的文件。

在我的本地环境中,您可以在浏览器中读取标记为

<script src="/js/cool.js"></script>

但是一旦投入生产,它就会变成:

<script src="/js/cool.js.pagespeed.ce.l2D9mD1nmX.js"></script>

.pagespeed.ce.l2D9mD1nmX.js表示已被缓存

现在我想知道它的建议还是预先加载已经在CDN中缓存的文件的做法?

因为我在做

<link rel="preload" type="application/javascript" href="/js/cool.js" as="script">

在我的<head>中,这将警告我:

资源(预加载文件)已使用链接预加载进行了预加载,但在窗口加载事件发生后的几秒钟内未使用。请确保它具有适当的as值并且已被有意地预加载。

因为从技术上讲/js/cool.js在dom中已不存在

1 个答案:

答案 0 :(得分:0)

  

在模块捆绑器中使用预加载插件。

问。建议还是预先加载已经在CDN中缓存的文件的做法?

A。是的,假设您实际上需要预加载 cool.js


现在,该警告实际上是预期的。参见cool.js.pagespeed.ce.l2D9mD1nmX.jscool.js是服务器上的两个不同文件。您的文件cool.js.pagespeed.ce.l2D9mD1nmX.js实际上是module-bundler对某些reasons产生的code.js的克隆。您正在做的是预加载cool.js,该代码的代码永远不会在生产中执行,因此警告- ...已使用链接预加载进行了预加载,但在窗口加载事件发生后的几秒钟内未使用。但是,您实际需要做的是预加载cool.js.pagespeed.ce.l2D9mD1nmX.js。假设您使用webpack作为模块捆绑商,则需要一个名为preload-webpack-plugin的插件来实现相同的功能。