亚历山大提出的解决方案看起来很合理。您可以将所有缩小的依赖项(在我的示例中为libs.js)保存在一个文件中,并将脚本保存在第二个文件中,如下所示:
wp_enqueue_script( \'libs\', get_template_directory_uri() . \'/assets/js/libs.js\', [], \'1.0.0\', true );
// third parameter here will make sure that libs.js is loaded before jsbundle:
wp_enqueue_script( \'jsbundle\', get_template_directory_uri() . \'/assets/js/jsbundle.min.js\', [ \'libs\' ], \'1.0.0\', true );
尽管捆绑脚本是优化页面加载速度的一种众所周知的做法,并且在大多数情况下是一个好主意,但它可能并不总是性能最好的解决方案。我总是会考虑一些其他的选择,并决定什么最适合特定的用例。
CDN
您可能想为您的第三方库使用一个可用的CDN,以获得列出的所有优势
in this answer.
E、 g.如果你使用谷歌或Facebook的CDN,你的访问者很有可能已经在浏览器中缓存了流行的脚本,无需再次下载。
在这种情况下,捆绑第三方脚本就失去了这一优势,需要下载整个捆绑包,即使用户已经将部分捆绑包保存在浏览器的缓存中。
您可以使用wp_enqueue_script(), 只需省略$ver 参数,因为您不想刷新缓存的脚本:
wp_enqueue_script( \'jquery\', \'https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js\', [], null, true );
我要考虑的另一件事是注册更多的脚本,并仅在实际使用它们的页面上调用它们。这非常有效,尤其是如果您经常更新脚本。
如果将所有脚本保存在一个捆绑包中,应用一个小更改需要破坏整个脚本的缓存。有时,最好将脚本的各个部分分开,这样就可以只更改实际编辑的块的版本。
假设我使用foo.js 我的主页上没有太多的脚本,所以我不打算很快改变它,但同时我有一个复杂的bar.js 我需要经常维护和刷新的脚本。在这种情况下,最好单独注册脚本。
此外,您的一些库可能只用于不经常访问的子页面(假设我使用masonry 在一个不太受欢迎的子页面上),所以在主页上预装它们可能不是一个好办法。在这种情况下,我会://注册砌体,但不要将其排队wp\\u register\\u脚本(\'砌体\',get\\u template\\u directory\\u uri()。\'/资产/建筑/砌体。min.js’,[],1.0,真);
// foo.js is my implementation of masonry.js
wp_register_script( \'foo.js\', get_template_directory_uri() . \'/assets/js/masonry.min.js\', [ \'masonry\' ], 1.0, true );
// in bar.js I keep functions used all over my page so I enqueue it everywhere immediately
wp_enqueue_script( \'bar.js\', get_template_directory_uri() . \'/assets/js/masonry.min.js\', [], 1.0, true );
// masonry.js and foo.js can wait until the user reaches my less popular subpage as it won\'t be needed most of the time
if ( is_post_type_archive( \'unpopular-posts\' ) ){
wp_enqueue_script( \'foo.js\' );
}