【发布时间】:2017-04-12 14:36:25
【问题描述】:
我们正在尝试解决 GTmetrix 上报告的以下输出:尝试延迟 javascript 的解析以减少页面加载时间。
但是,无法成功提高“延迟解析 Javascript”参数的等级。
我们已经尝试了以下步骤:
- 在我们网站的 /wp-content/themes/"theme"(porto) 中的 functions.php 中添加了以下代码行;这没有帮助。
// Custom Scripting to Move JavaScript from the Head to the Footer
function remove_head_scripts() {
remove_action('wp_head', 'wp_print_scripts');
remove_action('wp_head', 'wp_print_head_scripts', 9);
remove_action('wp_head', 'wp_enqueue_scripts', 1);
add_action('wp_footer', 'wp_print_scripts', 5);
add_action('wp_footer', 'wp_enqueue_scripts', 5);
add_action('wp_footer', 'wp_print_head_scripts', 5);
}
add_action( 'wp_enqueue_scripts', 'remove_head_scripts' );
// END Custom Scripting to Move JavaScript
- 将以下代码行添加到functions.php,但没有帮助。
// Defer Javascripts
// Defer jQuery Parsing using the HTML5 defer property
if (!(is_admin() )) {
function defer_parsing_of_js ( $url ) {
if ( FALSE === strpos( $url, '.js' ) ) return $url;
if ( strpos( $url, 'jquery.js' ) ) return $url;
// return "$url' defer ";
return "$url' defer onload='";
}
add_filter( 'clean_url', 'defer_parsing_of_js', 11, 1 );
}
尝试在 header.php 和 footer.php 的 javascripts 中手动添加 'defer="defer"' 属性,但没有改变。
安装了“Autooptimize”和“WP Deferred Javascripts”插件,但这会影响网站的工作(悬停时不显示下拉菜单)。
如果有办法解决这个问题,或者我们是否遗漏了什么,请告诉我们。请帮忙。
【问题讨论】:
-
在脚本标签上尝试异步属性
-
如果我理解正确,那么您的要求是在 DOM 渲染结束时执行 javascripts。根据您的代码,您期望 WP 在页脚中打印脚本,您的脚本是否在页脚处打印,您可以通过使用 (Ctrl + u) 查看页面源来检查
-
在顶部看起来几乎相同的js被加载了3次,为什么? 984.5K 翻了三倍?请解释一下,然后再写几行类似的东西。
-
@PrashanthReddy:我不确定“异步”的用法,我的意思是在这里应用它的过程。
-
@AbhisekMalakar:是的,脚本确实位于页脚;但成绩并没有提高
标签: javascript wordpress