用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5321|回复: 3
收起左侧

[数据库] CI的数据库缓存会生成太多的缓存文件的问题

[复制链接]
发表于 2011-6-25 12:13:27 | 显示全部楼层 |阅读模式
本帖最后由 昨夜渡轮 于 2011-6-26 09:33 编辑

CI的数据库缓存是一个查询条件生成一个缓存文件,那这样岂不是要生成太多的缓存文件?
比如我的一个网站有首页,列表页,内容页这三个部分,总共有数据30000条,

首页有10条查询语句就是要生成10个缓存文件

列表页每页显示20条记录,则有1500个翻页页面,每个页面有6个查询,则每个页面要生成缓存文件6个,一共就得有9000个缓存文件

内容页面一共有30000万条数据,如果每个页面有5条查询,那就要生成150000个缓存文件

粗略算计一下,一共就要生成159010个缓存文件,这样相对静态缓存来说生成的文件多太多了,而且CI的缓存在同一文件夹下,这样对IO 磁盘的大小要求岂不是更高了,数据库缓存可不可能一个页面生成一个缓存文件?
发表于 2011-6-26 16:09:35 | 显示全部楼层
如果页面内容过多,使用iframe分流是一个可选项。
再有,缓存的目的是加快客户端的显示速度和降低服务器的资源压力。如果与这两个目的相悖,缓存也就没有存在的意义了。
再有,在一个页面内读取数据库时,假设多次从一个表里select数据时。最好还是在数据库开发阶段多做一些设置和分割字段,然后一次读出,按条件foreach在各处显示。否则一个页面对一个表反复select,估计并发高一点,服务器就受不了。
 楼主| 发表于 2011-6-27 04:05:31 | 显示全部楼层
spt119 发表于 2011-6-26 16:09
如果页面内容过多,使用iframe分流是一个可选项。
再有,缓存的目的是加快客户端的显示速度和降低服务器的 ...

比如我的一个页面要查询月、周、日访问量的排行数据,另外还要查询一个当前页内容的数据,你能举个例说明一下吗谢谢
发表于 2011-6-27 08:43:45 | 显示全部楼层
我的观点,统计数据缓存没有意义。
如果在开发之初就设计了较为妥善的统计和缓存模式,我们再探讨,否则,说的再多都没有意义。建议,如果没有在软件设计时仔细规划过缓存和统计,干脆挂一个51la就行了。把所有的统计都放给51la。

本版积分规则