【发布时间】:2014-01-22 01:19:12
【问题描述】:
我正在尝试从 CDNjs 和 Google 等 CDN 加载我的一些脚本,这些脚本正在正确加载,但由于某种原因我没有找到,对于每个脚本我都有两个甚至三个 HTTP 请求(对于相同的脚本),这里是一个例子:http://tools.pingdom.com/fpt/#!/ePuR3Z/http://elbauldelprogramador.com.
我注意到当我登录时,所有脚本都只生成一个 HTTP 请求。
来自 ajax.googleapis 的 jquery 正在生成两个 http 请求,而 jquery.easing.min.js 来自 cdnjs 三个。
代码是:
//Making jQuery Google API
function modify_jquery() {
if (!is_admin()) {
// comment out the next two lines to load the local copy of jQuery
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js', false, '2.0.3');
wp_enqueue_script('jquery');
}
}
add_action('init','modify_jquery');
我有一个子主题,我从他的父母那里复制了一个名为 wi_enqueue() 的函数。在父函数中是这样的:
add_action( 'wp_enqueue_scripts', 'wi_enqueue' );
if ( !function_exists('wi_enqueue') ) {
function wi_enqueue(){
/* ...*/
}
在我的子function.php中我有:
function wi_enqueue(){
global $wp_styles, $smof_data;
/* Enqueue */
wp_enqueue_script( 'wi-easing', '//cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js', array('jquery'), '1.3', true );
wp_enqueue_script( 'wi-touchswipe', '//cdnjs.cloudflare.com/ajax/libs/jquery.touchswipe/1.6.4/jquery.touchSwipe.min.js', array('jquery'), '1.3.3', true );
wp_enqueue_script( 'wi-autosize', '//cdnjs.cloudflare.com/ajax/libs/autosize.js/1.17.1/autosize-min.js', array('jquery'), '1.17.1', true );
wp_enqueue_script( 'wi-placeholder', '//cdnjs.cloudflare.com/ajax/libs/placeholders/2.1.0/placeholders.min.js', array('jquery'), '2.1.0', true );
wp_enqueue_script( 'wi-modernizr', get_template_directory_uri() . '/js/modernizr.custom.15463.js', array('jquery'), '2.6.2', true );
wp_enqueue_script( 'wi-waypoint', '//cdnjs.cloudflare.com/ajax/libs/waypoints/2.0.2/waypoints.min.js', array('jquery'), '2.0.2', true );
wp_enqueue_script( 'wi-tipsy', get_template_directory_uri() . '/js/jquery.tipsy.js', array('jquery'), '1.0.0', true );
wp_enqueue_script( 'wi-fitvids', get_template_directory_uri() . '/js/jquery.fitvids.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'wi-sidr', get_template_directory_uri() . '/js/jquery.sidr.min.js', array('jquery'), '1.1.1', true );
/* .... */
}
【问题讨论】:
-
你真的不应该这样做。这是一个非常bad practice。请放弃这种方法。 wordpress 自己的 jQuery 没有任何问题(除了非常极端的案例使用。)
-
@Andy,这不是错误信息。 CDN 在许多国家/地区的工作方式与在美国或东欧不同。例如,在中国(世界互联网用户的三分之一)谷歌 CDN 的工作是零星的,如果有的话。工作时,网站的加载时间可以增加 200%。我建议你在指责别人
"spreading around misinformation"之前先做好功课。如果这是一个很好的解决方案,它早就在核心中了。更不用说在这个问题中从谷歌加载的 jQuery 不是处于无冲突模式, -
@Andy - 做你想做的事。关键是 - 如果你有问题,你不能知道。您可能正在开发小型本地网站,而您从未真正尝试过从国外检查它们。就像上面评论链接中所说的那样 - 您不知道您的用户是否有权访问 CDN。你不知道他们的加载时间。您不知道丢失的用户。
YOU没有问题这一事实并不能使它成为一个好习惯,也不能使我成为spreading around misinformation。 -
@Andy,如果你拒绝聊天,最后一条评论 - 你应该阅读你发布的链接 .. 如果你仔细阅读 - 它们实际上帮助我放弃了一点。我也想知道
"misinformation"我应该"stop spreading around like this"(和喜欢什么.. ??)。
标签: javascript php jquery wordpress