【问题标题】:Ajax and Site PerformanceAjax 和站点性能
【发布时间】:2013-05-04 15:33:17
【问题描述】:

我在为 wordpress 创建插件时正在学习 php 和 Ajax,并设法完成了它。它计算网站上所有横幅获得的点击次数和展示次数。你通过那个插件等放置横幅......无论如何,我刚刚添加了每个横幅获得的印象数。它没有任何问题。但是因为我是自己做的,而不是一些教程,所以我想知道这是正确的方法:

$(window).load(function() {

    $("a[count]").each(function(){
        var id = $(this).attr("count");
        var data = {
            action: 'impressions_count',
            postid: id
        };
        $.post(MyAjax.ajaxurl, 
            data,
            function(response) {
                console.log( response);
        });
    })
});

这是更新数据库的一部分代码

function impressions_count_callback() {
        global $wpdb;
        $post_id = $_POST['postid'];
        //print_r($post_id);
        $post_id = mysql_real_escape_string($post_id);
        $wpdb->query("UPDATE ". $wpdb->prefix ."cb_ads_manager SET impressions = impressions+1 WHERE ID = '$post_id'");
    }

你可以看到我正在为现场的每个baner发送ajax请求,所以如果我有5个baner那就是5个请求。如果我在一个请求中全部发送它会有什么不同吗,因为即使那样我也必须在 db 查询中执行 foreach 循环,所以我会再次执行 5 个 db 查询,除非它可以一次性完成。

附:即使我在 WP 中工作,我相信这更多的是 php/ajax 问题,这就是我在这里问的原因。

【问题讨论】:

  • 当您点击横幅时,它会将您重定向到主页吗?
  • 没有。点击没问题,这是在页面加载时捕获展示次数。
  • 啊,我明白了。那么为什么在用户加载的页面中没有impression 代码呢?

标签: php ajax performance http-request


【解决方案1】:

您实际上可以只发出一个 ajax 请求和一个对数据库的查询,如下所示:

$(window).load(function() {
    var ids = new Array();
    $("a[count]").each(function(){
        ids.push($(this).attr("count"));
    };
    if(ids.length > 0) {
       var data = {
          action: 'impressions_count',
          postids: JSON.stringify(ids);
       };
       $.post(MyAjax.ajaxurl, data,
           function(response) {
             console.log( response);
       });
    }

 }); 

在 PHP 中

function impressions_count_callback() {
        global $wpdb;
        $post_id = json_decode($_POST['postid']);
        //print_r($post_id);
        $post_id = implode(',', $post_id);
        $post_id = mysql_real_escape_string($post_id);
        $wpdb->query("UPDATE ". $wpdb->prefix ."cb_ads_manager SET impressions = impressions+1 WHERE ID IN ($post_id)");
}

【讨论】:

  • 谢谢,因为这是 jquery,我刚刚添加了 var ids = [];并像魅力一样工作。
猜你喜欢
  • 2011-01-23
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多