1

w3 total cache プラグインを使用して、Web サイトを高速化しています。ページ キャッシング、データベース キャッシング、オブジェクト キャッシング、js&css ミニフィケーションなど、さまざまな方法でうまく機能し、FBR (最初のバイト リクエスト) にかかる時間を短縮します。

しかし、tools.pingdom.com でページ速度テストを確認すると、不要な URL ( www.mydomain.com/?_wpcf7_is_ajax_call=1&_wpcf7=63 ) が表示され、パフォーマンスに影響を与える要求を完了するのに時間がかかります。

不要な URL が消えた w3 キャッシュ プラグインの無効化後。私はこの問題の原因を知っています - ajax 呼び出しで contactform7 プラグインを使用しているためです。しかし、contactform7 のキャッシングをなくすには w3 totalcache が必要でした



設定が変更されました:
w3 pagecache タブ -> 詳細設定 -> 次のページをキャッシュしない:

  1. /。[]。
  2. /?_wpcf7_is_ajax_call=1&_wpcf7=63/

しかし、役に立たない。どんな助けでも!!!

4

4 に答える 4

6

W3TotalCache は、これを wp-config.php に追加して、"WP_Cache" 定数を true に設定します。

/** Enable W3 Total Cache */
define('WP_CACHE', true); // Added by W3 Total Cache

WP_Cache が true に設定されている場合、Contact Form 7 は説明した Ajax 呼び出しを行います。

これは script.js で発生します。

if (_wpcf7.cached)
  this.wpcf7OnloadRefill();

ここで指摘されているように、キャプチャまたはクイズを使用する場合にのみ機能が必要なようです: https://wordpress.org/support/topic/plugin-contact-form-7-wpcf7onloadrefill-not-useful-and-原因負荷

ajax 呼び出しを回避するには、functions.php に次のコードを配置します。

// Hack Contact Form 7 to avoid unwanted ajax calls
// see http://stackoverflow.com/questions/19632244/is-w3-total-cache-compatible-with-contact-form-7
add_action('wpcf7_enqueue_scripts', 'hack_cf7');
function hack_cf7() {
    $_wpcf7 = array(
        'loaderUrl' => wpcf7_ajax_loader(),
        'sending' => __( 'Sending ...', 'contact-form-7' ) 
    );
    wp_localize_script( 'contact-form-7', '_wpcf7', $_wpcf7 );
}

説明:

Contact form 7 は、wp_localize_script を使用してインライン JavaScript を追加します。これは、WP_CACHE が設定されている場合、次のようになります。

var _wpcf7 = {
    "loaderUrl":"http:\/\/elsassfonden.dk\/wp-content\/plugins\/contact-form-7\/images\/ajax-loader.gif",
    "sending":"Sender ...",
    "cached":"1"
};

WP_CACHE が設定されていない場合、「キャッシュされた」プロパティは除外されます。これは、controller.php の関数 wpcf7_enqueue_scripts() で発生します。

私が提供したコードは、wpcf7_enqueue_scripts() が実行された直後に wp_localize_script を呼び出します。これにより、実際には同じインライン コードが挿入されますが、「キャッシュされた」プロパティはなく、Contact Form 7 によって生成されたインライン コードのすぐ下に挿入されます。

楽しみ!

于 2016-02-17T21:21:21.417 に答える
1

フッターなどのクライアント側でこれらの呼び出しを無効にすることもできます。

<script type="text/javascript">
    $.fn.wpcf7OnloadRefill=function(){};
</script>

これにより、フォームを再入力する JS 関数が実質的に空白になります。

于 2016-06-24T00:25:10.783 に答える