2017-02-07 14 views
1

Cloudflare Rocketloaderを特定のJavaScriptファイル用に無効にする必要があり、数時間を費やして別のソリューションを試してみると成功しません。私はWordPressを実行しており、特定の.jsファイルの自動ロケットローダーを省略する必要があります。特定のJavaScript用Cloudflare自動RocketLoaderを無効にする

私のテーマfunctions.phpにこの推奨コードを挿入すると、次のエラーが発生します。

スクリプトURL:のfunctions.phpでexample.com/wp-content/plugins/waveplayer/assets/js/waveplayer.js

コード

function rocket_loader_attributes_start() { 
ob_start(); 
} 

function rocket_loader_attributes_end() { 
$script_out = ob_get_clean(); 
$script_out = str_replace(
    "type='text/javascript' src='{rocket-ignore}", 
    'data-cfasync="false"'." src='", 
    $script_out); 
print $script_out; 
} 

function rocket_loader_attributes_mark($url) { 
// Set up which scripts/strings to ignore 
$ignore = array (
    'script1.js' 
); 
//matches only the script file name 
preg_match('/(.*)\?/', $url, $_url); 
if (isset($_url[1]) && substr($_url[1], -3)=='.js') { 
    foreach($ignore as $s) { 
    if (strpos($_url[1], $s)!==false) 
     return "{rocket-ignore}$url"; 
    } 
    return "$url' data-cfasync='true"; 
} 

return "$url"; 

} 
if (!is_admin()) { 
    add_filter('clean_url', 'rocket_loader_attributes_mark', 11, 1); 
    add_action('wp_print_scripts', 'rocket_loader_attributes_start'); 
    add_action('print_head_scripts', 'rocket_loader_attributes_end'); 
} 

エラー:

GET https://example.com/blog/sheol-stranger-things/%7Brocket-ignore%7Dhttps://example.com/wp-content/plugins/waveplayer/assets/js/waveplayer.js?ver=2.0.5 404() 

私はこれを私のheader.phpに挿入しようとしましたが、これもスクリプトを省略しませんロケットローダー。あなたはロケットローダーは、例えば、関連するスクリプトタグへのデータ-cfasync =「false」属性を追加することにより、個々のスクリプトを無視することができます

<script data-cfasync="false" src="/waveplayer.js"></script>  

答えて

2

<script data-cfasync="false" src="/javascript.js"></script>  

ただしそのdata-cfasync要素を確認する必要がありますsrcの前に来ます。また、これは別のJavaScriptファイルでは実行できません。

これでも問題が解決しない場合は、ページルールを使用して特定のエンドポイントのRocketLoaderを無効にすることを検討してください。

ただし、私のお勧めはあなたのサイトでHTTPSを有効にしてからRocketLoaderを無効にすることです。サイト上でHTTPSを有効にすると、RocketLoaderを使用せずに並行性などのHTTP/2機能を利用できます。

資源:

関連する問題