当前位置:Gxlcms > PHP教程 > 求教smarty清空缓存判断的设计技巧

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

时间:2021-07-01 10:21:17 帮助过:18人阅读

今天才开始学习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 :
这是你臆造的需求,如果你缓存文章,那么就相当于自己再维护一个文件型数据库
如果确有需求,那也是生成静态页面,而不是缓存数据
当发生文章修改时,重新生成静态页就可以了

人气教程排行