使用缓存或应用程序范围创建命中计数器
|
我想为我的ColdFusion应用程序创建一个计数器。我不希望每次点击时都更新数据库点击表。理想情况下,我想在应用程序范围内或某些类型的结构中汇总缓存,然后间歇性地保存它们。
到目前为止,我有一些想法:
想法1
创建一个应用程序或缓存结构以存储pageId和pageHits键值对。
在每次点击的网页上,检查是否存在pageId / ip地址cookie。
一种。如果存在,则什么也不做。
b。如果没有,请进行设置并更新应用或缓存中的匹配结构。
问题:我不知道如何将结构数据间歇性地/在经过一定时间后进入数据库。预定活动?
想法2
没有饼干;将pageId / ip地址保存在自己的缓存/应用结构中。
问题我不确定如何构造数据结构/数组来存储信息。似乎复杂于数组循环和结构查找。而且我仍然遇到与想法一相同的问题。
有什么建议,想法,批评吗?特别是,我需要一些帮助来确定想法2的数据结构。我对性能比对数据完整性更感兴趣,并且对仅CF9解决方案感到满意。我应该补充一点,我希望将每个页面ID的数据归一化到页面点击列中。我不需要标准化的数据表。
没有找到相关结果
已邀请:
2 个回复
昧伎
,并定期通过
遍历over1ѭ。对于每一批,您都可以按照已经描述的方式,然后根据IP地址使用任何数据库方法进行INSERT / UPDATE(通常使用MERGE关键字,但是MySQL是不同的),基于IP地址后。如果这是一个非常繁忙的站点,请考虑将IP地址列的数据类型更改为整数数据类型以加快索引查找的速度。 更新资料 使用以下代码来设置文件对象引用:
这样做会设置一次参考(即
),从而跟踪其所在的行。然后,当
再次点击此代码时,它将使用现有的引用(如果存在)并从那里进行迭代。该锁可确保只有一个线程执行该算法-因此您不必担心时间限制,只需让它持续运行即可。
醒荒捆府绣
是您的朋友 想法2:保存pageId / ip地址?我猜这比使用Java中的Set更好,但是如果将其赋值为空值,struct也可以工作...
但是,如果我再次访问tmr页面,我将不会被计数?