所以我有一个PHP CodeIgniter webapp,我正在尝试决定是否合并缓存。
请耐心等待我,因为我很高兴地承认我并不完全理解缓存!
因此,第一个用户加载了一页用户提交的内容。加载'慢'需要0.8秒(处理)。然后,下一个用户加载同一页面,从缓存中“快速”加载它需要0.1秒。
第三个用户加载它,也需要0.1秒的执行时间。此用户决定对该页面发表评论。
第四个用户在2分钟后加载它,但没有看到第三个用户的评论,因为在缓存过期之前还剩下50分钟
在这种情况下你做了什么?是否值得在这样的页面上加入缓存?
我想使用缓存的原因是因为我运行了一些测试。 没有缓存,我的页面平均执行时间为0.7864秒。 使用缓存,平均花费0.0138秒。 这是5599%的改善!
我知道它仍然只是几毫秒,但即便如此......
杰克
答案 0 :(得分:6)
您需要更好的缓存。
通常,您永远不应达到缓存的超时时间。相反,一些用户驱动的操作将使缓存失效。
所以如果你有这样的场景:
我不是CodeIgniter的人,所以我不确定该框架会为你做什么,但上面通常会发生什么。您的应用程序应具有足够的内置智能,以便在写入需要缓存失效的数据时使缓存条目无效。
答案 1 :(得分:1)
尝试使用CI query caching。页面仍然每次都呈现,但DB结果被缓存...并且可以使用本机CI功能(即没有第三方库)删除它们。
答案 2 :(得分:0)
虽然CI仅提供页面级缓存,但没有失效,我曾经以不同的方式处理此问题。处理此问题的最简单方法是从缓存中加载所有繁重的内容,而通过非缓存的Ajax调用加载的注释。
或者您可以查看解决此问题的自定义插件,就像您之前指出的那样。
这一切都取决于您想要控制缓存的粒度。对于像博客这样的简单事情,通过外部ajax调用加载注释(按需 - 就像用户明确请求注释一样)是最好的方法。