2017-01-25 14 views
1

我有一個wordpress網站使用W3緩存插件MaxCDN和Cloudlfare。我運行了幾個不同的速度測試,一個常見的建議是「從靜態資源中刪除查詢字符串」。我下載了一個插件並在任何地方清除了我的緩存,但仍然收到了此消息。試圖刪除特殊的查詢字符串

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); 

一些仔細檢查後,原來所有的speedtests是指在結束文件?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); 

有沒有人有任何建議,我怎麼能解決這個問題?

回答

0

首先,刪除?ver = ...查詢參數並不是一個好主意。此版本通常是靜態的,只有在更改腳本時才應更新。

您的客戶端將腳本保存在本地瀏覽器歷史記錄中以及緩存插件可能會保存此腳本服務器端。如果版本更新正確,則會傳遞新腳本。如果您刪除了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從哪裏來?找到創建這個奇怪附錄的插件/函數並找出原因。它看起來像一個定製的想法,以替代「ver」查詢參數。

一般而言,我認爲從靜態資源中刪除查詢字符串並不是一個好主意,因爲通常有一個很好的理由。不知道他們爲什麼推薦它。如果文件使用查詢字符串進行緩存,它不會減慢網站的速度(或者至少我無法想出原因)。