试图删除特殊的查询字符串

时间:2017-01-25 22:52:48

标签: wordpress

我有一个使用带有MaxCDN和Cloudlfare的W3缓存插件的wordpress网站。我运行了几个不同的速度测试,一个常见的建议是从静态资源中删除查询字符串"。我下载了一个插件并清除了我的缓存,但仍然收到了这条消息。

function vmf_remove_script_version( $src ) {
if ( strpos( $src, 'ver=' ) ) {
    $src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_filter( 'script_loader_src', 'vmf_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', 'vmf_remove_script_version', 15, 1 ); 

经过仔细检查后,结果显示速度测试所指的所有文件都以?x81224结尾(其中包含50多个文件)。所以我将代码修改为以下但仍无法修复!

function remove_cssjs_ver( $src ) {
 if( strpos( $src, '?ver=' ) ) {
    $src = remove_query_arg( 'ver', $src );
 }elseif( strpos( $src, '?x' ) ) {
    $src = str_replace('?x81224','',$src);
   //remove_query_arg( 'x', $src ); <- thought this wouldn't work because there's no = sign
 }
 return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );

有没有人对我如何解决这个问题有任何建议?

1 个答案:

答案 0 :(得分:0)

首先,删除?ver = ... query参数不是一个好主意。此版本通常是静态的,只有在更改脚本时才应更新。

您的客户端在其本地浏览器历史记录中保存脚本以及缓存插件可以保存此脚本服务器端。如果版本正确更新,则会提供新脚本。如果删除ver查询参数,过期的脚本将被传递给您的客户(可能很长一段时间),这会导致很多麻烦和客户投诉。 不要这样做

此外,我在您的脚本中识别出两个问题:

1)删除过滤器优先级应该是最新的,这样它就不会被其他插件覆盖,因此设置参数4到100(https://developer.wordpress.org/reference/functions/add_filter/

function remove_cssjs_ver( $src ) {
  if( strpos( $src, '?x' ) ) {
    $src = str_replace('?x81224','',$src);
 }
 return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 100, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 100, 2 );

2)在哪里?x81224来自哪里?找到创建这个奇怪的附录的插件/函数并找出原因。它看起来像一个定制的想法,作为&#34; ver&#34;的替代品。查询参数。

一般来说,我会说从静态资源中删除查询字符串并不是一个好主意,因为通常有充分的理由。不知道他们为什么推荐它。如果文件缓存了查询字符串,它不会减慢网站的速度(或者至少我想不出原因)。