求smarty缓存的思路

WormJan 2011-07-28 01:26:44
小弟现在用smarty模板。有一个关于缓存的问题,一直解不开疙瘩。

比如我现在有20篇文章,10篇文章是一页,共两页。按文章ID倒序排列。

象这个应该怎样去缓存呢?我的理解是,每一页做一个缓存。但是:

现在,我新发一篇文章,即第 21 篇。那么,这2页的缓存都需要更新。因为发文章之前的第一页的最后一篇,在发文章后,已经跑第2页去了。如果不更新第二页的缓存的话,那么第一页的最后一条文章就没有了。

如果文章有几百几千页,那岂不是很不合理呢?

所以我感觉这样来缓存实在不合理,所以求合理的列表页缓存思路。

谢谢。
...全文
184 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
WormJan 2011-07-28
  • 打赏
  • 举报
回复
第一页:文章1,文章2......文章10
第二页:文章11,文章12......文章20

假设目前缓存如上。

新发一篇文章,比如我取名为 文章A。

这时,更新第一页,那第一页就是 文章A,文章1,文章2......文章9
第二页如果不更新,就是 文章11,文章12......文章20

那,文章10就没有了。

好吧,更新第二页,那第二页就是:
文章10,文章11,文章12......文章19

第三页因为没有更新,所以应该是 文章21,文章22......文章30
那么,文章20又不见了。

我就是这个意思。如上推断,发布一篇文章,所有页都要更新,如果有一千页一万页,这个工作量就有点太大了。
WormJan 2011-07-28
  • 打赏
  • 举报
回复
谢楼上
现在就是定时重新缓存的问题。我的做法是,有新发布的文章后,就重新缓存。问题就是,如果我的文章有1000页,是不是有新发布的文章以后,要对这一千页全部重新缓存?
rczjp 2011-07-28
  • 打赏
  • 举报
回复
文章经常更新要分页,一般不要缓存把,或者看你更新的频率来定时重新缓存
WormJan 2011-07-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 coolesting 的回复:]
smarty模板的缓存没问题, 在这里你显然是用静态缓存(整页或片断), 要自己设置定时间去更新。

要使用这静态必需重新设计你显示文章的布局, 只有改变你自己的应用去适应smarty的缓存, 修改smarty是没必要了, 都已经用到静态, 意味缓存后不可改变。(要么定时刷新)
[/Quote]

smarty的缓存应该都是这样用的吧
$tpl->caching=true;
$tpl->cache_lifetime=3600;
然后可以对局部不缓存insert block等。

必需重新设计你显示文章的布局
假如现在网站啥也没有,就只有一个页面list.php,就只是输出文章列表,要求用缓存,并且满足我上面一贴的条件。

我的意思就是这样的。
WormJan 2011-07-28
  • 打赏
  • 举报
回复
也就是说,用smarty的缓存,怎样实现如果有缓存就不需要查询数据库直接显示,而我发一篇文章后,缓存就更新,并且不会出现哪一条不见了的情况。

求实现这个效果的思路。
smarty的基本使用我已经会搞了,象建立缓存清除缓存缓存周期判断是否有缓存等等。
WormJan 2011-07-28
  • 打赏
  • 举报
回复
谢谢几位朋友。

可能我没说清楚。我的问题主要不是如何去使用smarty。我想问的不是象局部缓存insert block、缓存周期如何更新之类的问题。我的意思是:

每发表一篇文章【最新的文章排在最前】,文章列表页都要去更新缓存。并且必须是每一页都要更新。如果我的文章有500页,那这个更新就有点动作太大了。但如果只更新第一页的缓存,那么,发文章之前的第一页的最后一篇文章,就不见了。因为如果没有缓存的话,这篇文章会排到第二页的第一条去。但因为第二页有缓存,所以就不显示这一篇文章。

即,文章列表页 的缓存,如何去设计呢?
骄傲青蛙 2011-07-28
  • 打赏
  • 举报
回复
smarty模板的缓存没问题, 在这里你显然是用静态缓存(整页或片断), 要自己设置定时间去更新。

要使用这静态必需重新设计你显示文章的布局, 只有改变你自己的应用去适应smarty的缓存, 修改smarty是没必要了, 都已经用到静态, 意味缓存后不可改变。(要么定时刷新)
Spring 2011-07-28
  • 打赏
  • 举报
回复
只能静态化了。
heyli 2011-07-28
  • 打赏
  • 举报
回复
列表如果做了缓存 在新增文章的时候要清掉原来的缓存文件
smarty找不到缓存文件 就会重新读取数据库 生成一个新的文件
WormJan 2011-07-28
  • 打赏
  • 举报
回复
我以前弄的那个站,最后列表页也没做缓存。看来真不能做缓存?
2楼朋友说的我没弄明白什么意思。
阿里酷巴巴 2011-07-28
  • 打赏
  • 举报
回复
你做个文章模板,生成缓存的也是一个文章的模板。你只要传不能的文章ID 只要内容更新就可以了 有疑问QQ:495244854
xuzuning 2011-07-28
  • 打赏
  • 举报
回复
一般列表页都不做缓存

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧