jquery - 是否可以使用 jquery post 或 get 请求来保存访客统计信息?

标签 jquery mysql innodb myisam

我正在考虑建立一个系统来保存位于不同域的单独网页的访问者统计信息。尽管页面是用 php 创建的并且具有 mysql/isam 数据库,但由于性能问题,这些页面可能会被缓存。

我正在考虑为所有页面添加 jquery 代码。这是伪代码:

function(request, response) 
{
                $.ajax({ url: "http://www.mywebstats.com/post>",
                data: { page: <? echo $current_url; ?>, ip: <? echo $user_ip; ?>, session: <? echo $user_session; ?> },
                dataType: "json",
                type: "POST",
                success: function(data){
                    response(data);
}

还有一个类似但相反的函数,用于显示这些网页的访问情况。

我想,我解释了我想做什么。问题是:

1- 这种方法值得提高性能吗? 2-我应该使用什么样的数据库存储引擎?

最佳答案

假设您很滑稽,而 Google 分析无法满足您的需求 -

您可以为 http://www.mywebstats.com 构建一个简单的 API并每 5 分钟运行一次 cron 以推送到接收脚本。这样您就不会在每次页面加载时即时调用。

您的本地脚本将完全执行您上面所做的操作,但不执行到外部位置。您的本地脚本将用户数据转储到队列中,该队列可以按 token 、 session 信息或任何数据进行分组,以跟踪他们的浏览路径、行为等。当 cron 被调用时,它会获取最后 100 条记录并将其发送到您的 API。

这对于以前使用过 cron 的人来说应该是有意义的。

至于数据存储。这取决于您将如何与数据交互。 Myisam 听起来可以很好地满足您的需求。此时,InnoDB 将是您的选择。如果您使用某种 ORM 来检索记录,那么您可能需要走这条路线。如果您觉得需要对统计数据运行手动搜索查询,则可以使用 Myisam 进行全文匹配。有点取决于你打算做什么。 即使您公开数据并可能面临报告数百万条记录的情况,您仍然可以优化在收到后编译的输出,向用户提供缓存的报告,以简化处理。

简而言之 - 在本地收集数据并使用 cron 将其推送到您的统计站点。 Myisam 看起来很不错。我的看法是。

更新

至于你的问题 - Google Analytics(分析)有一个可用于获取数据的 API: http://code.google.com/apis/analytics/docs/gdata/home.html

我从未与它互动过,但它很可能有您可能正在寻找的东西。

至于单独的数据库交互 - 不一定。您可以为任意数量的站点使用一个数据库,但这没有多大意义。我提到看起来像 2 个单独的数据库,因为您的问题看起来像是您正在调用一个单独的站点,该站点仅用于执行两件事 - 记录统计数据并提供统计数据。为此,我肯定会说你应该将其分成两个数据库。特别是当有多个站点调用 API 时。

您的点击计数器也可以轻松记录在 cron 上。您的 stat 站点上将有一个单独的 cron 作业,用于计算最近更新的页面并更新与相关页面关联存储的简单 json 字符串。这样你的要求就很轻了。如果您想避免另一个 cron 作业,您可以从那里动态调用计数器 - 或者 - 您可以运行一个额外的 cron 来获取最新的页面计数器结果并将其存储在本地或将它们写出为纯文本以供进一步使用缓存。

要记住的是,cron 这个术语并不是一个可怕的东西。如果您的主机允许您设置它们,那么它们对于基本维护和性能改进非常方便......假设您正确地进行了设置。它们仍然需要以逻辑方式构建,这样您就不会编写运行 5 分钟或超时的脚本。但那是另一个故事了。希望您足够了解自己在做什么,从而明白我的意思。

关于jquery - 是否可以使用 jquery post 或 get 请求来保存访客统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9269143/

相关文章:

jquery - 使用 jquery 的可排序将项目从一个列表复制到另一个列表

MySQL选择等于多个值的地方

mysql - 如何让Slick建表语句使用InnoDB

JQuery - 从选定的表行获取值

php - 在 WordPress 中使用 ajax 获取自定义字段值

javascript - 检查点击了什么然后条件,如果没有然后条件

mysql - 某航空培训中心数据库设计与查询

mysql - 如何从 WordPress 数据库中检索值?

mysql - 我应该牺牲我的 innodb_buffer_pool_size/RAM 来为 query_cache_size 腾出空间吗?

mysql - 可以替换应用的 Liquibase 变更集吗