最近自己做了一个个人网站,缓存了文章列表和内容。
想实现文章阅读数缓存。
开始想法是,用文件做缓存,如果缓存数码达到一个值,如%10==0,更新数据库。
仔细分析,这样的方案会出现有些文章很快达到此值,频繁更新数据库,有些文章,很长时间也达不到此值,而不能更新数据库。
还有一个问题就是,一次更新一篇文章的阅读数,性能低,是否可以一次更新多篇文章的阅读数?
后来想了一个方案解决此问题。
一个文件保存多个文章的阅读数和上次更新数据库时间,json 格式 {文章编号:阅读数,文章编号:阅读数,lastTime:时间}。
这样可以设定一个时间如24小时,批量更新一次数据库。
一个简单的文件文章数控制算法
假设文章编号 1-100000
ceil(文章ID/1000 )为文件名 , 文件名 就为:1-100
1-999的文章保存到文件1.txt
1000-1999的文章保存到文件2.txt
ceil(文件名 /1000 ) 文件目录,一个目录下的文件或子目录太多,会影响性能
批量更新一次数据库,遍历一个文件的阅读数,动态创建批量更新数据库的sql.
后台阅读数缓存,递增逻辑封装成一个接口,页面js 异步读取并递增文章阅读数。
功能完美实现,感觉还不错。
页面效果预览:http://www.cyfhw.top/15/427.html