我有一个缓存在某些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中已不存在
答案 0 :(得分:0)
在模块捆绑器中使用预加载插件。
问。建议还是预先加载已经在CDN中缓存的文件的做法?
A。是的,假设您实际上需要预加载 cool.js 。
现在,该警告实际上是预期的。参见cool.js.pagespeed.ce.l2D9mD1nmX.js
和cool.js
是服务器上的两个不同文件。您的文件cool.js.pagespeed.ce.l2D9mD1nmX.js
实际上是module-bundler对某些reasons产生的code.js
的克隆。您正在做的是预加载cool.js
,该代码的代码永远不会在生产中执行,因此警告- ...已使用链接预加载进行了预加载,但在窗口加载事件发生后的几秒钟内未使用。但是,您实际需要做的是预加载cool.js.pagespeed.ce.l2D9mD1nmX.js
。假设您使用webpack作为模块捆绑商,则需要一个名为preload-webpack-plugin的插件来实现相同的功能。