1 wordpress performance contact-form-7 w3-total-cache
我只是使用w3总缓存插件来加速我的网站.它在许多方面都很有用,例如页面缓存,数据库缓存,对象缓存,js和css缩小,还可以减少FBR(第一个字节请求)所需的时间.
但是当我在tools.pingdom.com上检查pagespeed测试时,它会显示一些不需要的网址(www.mydomain.com/?_wpcf7_is_ajax_call=1&_wpcf7=63)需要花费大量时间才能完成影响性能的请求.
停用w3缓存插件后,不需要的网址消失了.我知道这个问题的原因 - 因为使用了带有ajax调用的contactform7插件.但它需要w3 totalcache来消除缓存contactform7
但没用 任何帮助!!!
W3TotalCache将"WP_Cache"常量设置为true,方法是将其添加到wp-config.php:
/** Enable W3 Total Cache */
define('WP_CACHE', true); // Added by W3 Total Cache
Run Code Online (Sandbox Code Playgroud)
当WP_Cache设置为true时,Contact Form 7将进行您描述的Ajax调用.
这发生在script.js中:
if (_wpcf7.cached)
this.wpcf7OnloadRefill();
Run Code Online (Sandbox Code Playgroud)
当你使用验证码或测验时,似乎真的只需要这个功能,如下所示: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 );
}
Run Code Online (Sandbox Code Playgroud)
说明:
联系表单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"
};
Run Code Online (Sandbox Code Playgroud)
如果未设置WP_CACHE,则"缓存"属性将被删除.这发生在controller.php中的函数wpcf7_enqueue_scripts()中
我提供的代码在运行wpcf7_enqueue_scripts()之后调用wp_localize_script.这实际上插入了相同的内联代码,但没有"缓存"属性,就在联系表单7生成的内联代码的下方.
请享用!
归档时间: |
|
查看次数: |
5162 次 |
最近记录: |