从wp_register_script删除?ver =


8

我在Google速度测试中对脚本中的查询字符串感到na恼。因此,我试图通过传递false作为该参数的参数来删除它们。但是,它似乎没有效果:

wp_register_script('myscript', get_bloginfo('template_directory').'/scripts.myversionnumber.js',false,false,true);
wp_enqueue_script('myscript');

PS:js文件名的“ myversionnumber”部分是我控制缓存/版本控制的方法,而不是?ver =方法,该方法显然会使某些代理服务器跳闸(根据Google pagespeed测试):

从静态资源中删除查询字符串在静态资源的HTTP标头中启用公共缓存可使浏览器从附近的代理服务器而不是从远程源服务器下载资源。学到更多

此页面的建议

资源带有“?” 某些代理缓存服务器未缓存URL中的。删除查询字符串,并将参数编码为以下资源的URL:


有趣的问题,从未知道查询字符串会提高页面速度。虽然我没有解决方案,但是我对将参数设置为“ false”表示了评论:Afaik,您可以输入版本号,或者默认为当前的wordpress版本。
约翰内斯·皮尔

我认为,脚本将被缓存,即使有版本号-这改变了版本号将“休息”的缓存,故意使新的,而不是老了,脚本会被加载....
斯蒂芬·哈里斯

@Stephen,就是这样的想法。但是,显然某些代理缓存服务器不会缓存带有查询字符串参数的资源URL。这就是为什么我选择在文件名中编码参数。效果相同,行李少。
Scott B

您好斯科特B。我正面临着同样的问题。在gtmetrix上运行测试后,出现查询错误。@SickHippie提供的解决方案对您有用吗?使用安全吗?
kat_indo 2013年

Answers:


9

我认为您必须将NULL作为第四个参数传递。

wp_register_script(
    'myscript',
    get_bloginfo('template_directory').'/scripts.myversionnumber.js',
    false,
    NULL,
    true);
wp_enqueue_script('myscript');

3

您可以将null版本值传递给wp_register_scriptwp_enqueue_script,它应该删除查询字符串。

<?php
wp_enqueue_script(
   'myscript',
   '/path/to/script.js',
   array(),
   null
);

3

前言

我解决这个问题的方式与SickHippiechrisguitarguy截然不同,我想这不是应该解决的方式,但是对我来说确实很好。

编码...

我将以下代码片段放在主题functions.php文件的末尾:

function remove_cssjs_querystring( $src ) {
  if( strpos( $src, '?rev=' ) ) // copy/paste this line and the next one to take away what you want from the end of your css/js
    $src = remove_query_arg( 'rev', $src );
  if( strpos( $src, 'ver=' ) )
    $src = remove_query_arg( 'ver', $src );
  return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_querystring', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_querystring', 10, 2 );

这个想法来自哪里...

我在Google上寻找它,但发现了这篇文章,但是我对css / js一直有疑问:这时我的代码最后仍然(在那儿)像这样.../some-stylesheet.css?rev=...,我想扩展代码段a包括可能会发生的任何事情.css

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.