欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

求教smarty清空缓存判断的设计技巧

程序员文章站 2022-03-04 15:31:09
...
今天才开始学习smarty……
有个清空缓存的判断没有搞清楚,请指点一下:

首页或者目录的缓存很好理解,查询的数据又多,没有缓存的话每次都要查数据库
但是到具体的文章内容的话,不是就没有那个必要了吗?
情况1:如果文章被修改了,那么肯定要清空缓存,如何知道文章被修改了呢?查数据库修改的时间……修改时间和文章内容是绑定在一起放在一个表的啊……这和直接查询有啥区别?
情况2:文章被点击后有一个点击数的记录,这个点击数是放置在文章的数据表中的……为了获取点击数,还是要查询这个文章的数据表(点击数和正文也是放在一个表的啊)……这有啥区别?另外将点击数做一个表连接到文章表……这数据库也设计得太扯了吧?

回复讨论(解决方案)

情况1:可以用is_cached()方法判断
情况2:获取点击数查文章表这不奇怪啊。。。

情况1:可以用is_cached()方法判断
情况2:获取点击数查文章表这不奇怪啊。。。
情况1:看了api,知道可以用is_cached通过模板和查询参数来判断,一般情况下就是直接缓存了。因为我懒,所以我的服务器也懒,估计这个缓存持续时间10年也说不定 。但是有些时候会有人来编辑这个文章,如果我要知道文章是否被编辑,也简单,在编辑后修改最后编辑时间就行了。但是这样一来因为每次浏览的时候不知道文章是否被编辑,所以还是要去查询数据库,感觉没有起到缓存的作用啊……
情况2:貌似我已经有个想法了……

其实这个东西是否自己写循环10000次的sql语句查询不同的id就可以判断出来了?
也就是说如果select * from tablea where `id` = $id消耗远比select `modifydt` from tablea where `id`=$id要大得多,那么实际上通常情况下大部分时候只是使用消耗小的数据进行查询。
不过懒得测试了……求直接告诉答案吧……

对于 情况1 :
这是你臆造的需求,如果你缓存文章,那么就相当于自己再维护一个文件型数据库
如果确有需求,那也是生成静态页面,而不是缓存数据
当发生文章修改时,重新生成静态页就可以了