【问题标题】:Ignore Cloudflare Automatic RocketLoader for specific JavaScript忽略特定 JavaScript 的 Cloudflare Automatic RocketLoader
【发布时间】:2023-03-31 19:28:01
【问题描述】:

我需要为特定的 JavaScript 文件禁用 Cloudflare Rocketloader,我花了几个小时阅读和尝试不同的解决方案,但没有成功。我正在运行 WordPress,需要为特定的 .js 文件省略 Automatic Rocket Loader。

将此推荐代码插入我的主题functions.php 会引发以下错误。

脚本网址:example.com/wp-content/plugins/waveplayer/assets/js/waveplayer.js

functions.php 中的代码

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 中,但这也不会省略 Rocket Loader 中的脚本。

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

【问题讨论】:

    标签: javascript wordpress cloudflare rocket-loader


    【解决方案1】:

    您可以通过将 data-cfasync="false" 属性添加到相关脚本标签来让 Rocket Loader 忽略单个脚本,例如:

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

    但是,您必须确保 data-cfasync 元素位于 src 之前。这也不能在另一个 JavaScript 文件中完成。

    如果这对您来说仍然存在问题,您可能需要考虑使用页面规则为给定端点禁用 RocketLoader。

    但是,我的建议是在您的网站上启用 HTTPS,然后禁用 RocketLoader。通过在您的站点上启用 HTTPS,您将受益于 HTTP/2 功能,例如并发性,而无需使用 RocketLoader。

    资源:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-25
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 2019-03-05
      • 1970-01-01
      相关资源
      最近更新 更多