是否值得在每次访问页面时更新数据库?


Is it worth updating the database every time a page is visited?

我正在制作一个非常简单和小的访客计数器,我想知道自己是否在服务器资源上太重,每次访问者进入网站的页面时打开MySQL数据库。

有些人将访问存储在纯文本文件中,也许我可以将访问数存储在会话中(在一个数组中,每个页面都有一个键),当会话关闭时,我一次将其复制到数据库中?

最简单的方法是什么?

在大多数健壮的web应用程序中,由于某种原因,数据库在每次页面加载时都会被查询,所以除非你有严重的资源限制,否则你不会因为计数器查询而破产,或者通过避免它来节省大量加载时间。

一个考虑因素可能是增加数据库更新的值,以便可以为多个用途查询一个更新。在您的情况下,您可以有一个视图日志,如:

INSERT INTO view_log 
VALUES (user_name, ip_address, visit_timestamp, page_name)

可用于报告特定页面的受欢迎程度,跟踪用户活动,调试等。点击次数可以是:

SELECT COUNT(1) FROM view_log

如果你的网站已经有了数据库,那就使用它吧!

连接很可能在打开之间池化,并且花费很少的精力。

如果你写一个文件,网站需要对它进行写访问,那么在多个用户连接期间,你就有并发问题的风险。

如果服务器突然关闭,仅在会话关闭时持久化也是有风险的。

大多数站点打开MySQL连接,所以如果你这样做,你不必打开它两次。写入磁盘也占用资源(尽管可能较少),此外,如果您在繁忙的网站上有一个基于文件的计数器,您可能会很快耗尽磁盘的一小部分。这些文件写入将不得不等待对方,而MySQL处理多个请求更灵活。

无论如何,我会写一个简单的计数器接口,抽象这一点,所以你可以切换到文件,MySQL或任何其他存储容易,而不必修改你的网站太多