功能

减缓网站并发压力而开发的缓存插件。

注意

  1. 支持MemcacheRedisMysql三种驱动。
  2. 非js方式的访问统计插件会失效
  3. BUG请在缓存插件TpCache for Typecho页汇报

使用说明

后台设置

后台设置截图

组件支持

请确保你的服务器memcache套件工作正常。

目前老高提供了phpmemcachememcached的支持,请选择对应的驱动。

memcached配置请参考Linux服务器配置memcached并启用PHP支持

Redis配置请参考Linux服务器配置Redis并启用PHP支持

缓存更新机制

目前以下操作会触发缓存更新

  • 来自原生评论系统的评论
  • 后台文章或页面更新
  • 重启memcached
  • 缓存到期

评论

原生评论简单测试过,没有大问题。

不过既然使用缓存了不如直接使用第三方评论系统,如多说。

性能

在老高的烂主机上随便就能跑到保守800的并发(CPU占用不到70%),什么概念呢?

理论上支持每天69120000(60*60*24*800)的PV。

下载

phpgao/TpCache

安装

请将文件夹重命名为TpCache。再拷贝至usr/plugins/下

升级

请先禁用此插件后再升级,很多莫名其妙的问题都是因为没有先禁用而直接升级导致的!

标签: memcache, typecho, plugin, cache

已有 208 条评论

  1. 问题一:会保留别人评论的名称邮箱等信息
    问题二:文章浏览次数无法更新

    请问如何解决呢

    1. 2. 因为那个次数是页面的一部分,所以肯定被缓存了,你可以使用js加载访问次数,这样就不会被缓存住了
      1. 为啥我本地没法测出来呢?

      能不能具体一点?

    2. 我也是这两个问题, 不知道楼主有没有解决???

      1. 能不能把细节告诉我,目前本地无法复现

  2. 我在用另外一个版本测试正常!

  3. jin jin

    感谢大佬,插件安装后顺利运行。

  4. 老高,我这里用着挺正常
    就是有一个页面,动态页面(利用评论生成的站长动态页面)显示一片空白。
    老高能不能帮看下啥问题
    https://black1ce.com/cross.html
    或者,如何只禁止某页面缓冲?我取消页面缓冲都不好使,不知道啥情况

  5. 反馈一个问题,文章发布后,虽然首页能看到新文章,但列表第二页仍然还是缓存页,也就是说原本首页的最后一篇文章丢失了。理论上应该移动到下一页才是。

  6. 最近新博客准备上线

    先mark一下~

  7. 老高..... 用了这个插件开启了redis缓存之后, 多次刷新被缓存过的页面页面就会出现加载加载js和css失败的错误.....具体chrome的错误代码是: Uncaught TypeError: Cannot read property 'classList' of null

    1. 我已经在github页面提了一个issue, 那里有详细的截图....

    2. 我的网站老高你那边应该可以看得到.. 在文章页 归档页 友链页多次刷新就会出现上面说的错误.....

  8. 用 redis,提示 This page needs to be cached. Can't find cache.
    换 memcached,还是这个提示,每个页面都是
    redis 和 memcached 配置没问题,是什么原因呃。

  9. wiwi wiwi

    启用插件404是怎么回事

    1. 目录名称有问题,请检查

  10. Mr. Mr.

    你好,我觉得你这个缓存插件很不错,但是据说有缺陷?请问新版本什么时候更新?

  11. 这个插件我很喜欢,对我也很有用。
    不知何时能够修复问题并能够重新使用?

  12. T先生 T先生

    现在还能用吗?下载地址呢?

    1. 这个插件的机制有点问题,老高还在想办法

  13. 熊猫 熊猫

    下载地址失效?

    1. 不是失效了,而是先不让下载了

  14. 被缓存的文章页面下方的上个评论者的信息也会被缓存下来,当下个评论者访问时,评论区域默认为上个评论者的信息。
    期待更新插件!多谢

  15. 你好
    使用了该插件后感觉很好,就是有个小问题。当缓存了“文章”页面时,被缓存的文章页面下方的上个评论者的信息也会被缓存下来,当下个评论者访问时,评论区域默认为上个评论者的信息。这个问题很困扰,想了解一下该如何解决。

    1. 之前缓存的页面是整个页面,下一步打算只缓存文章,等我研究一下,插件暂时不要使用

      1. 提个思路,就是在需要更新缓存(比如评论更新或者更新文章)的时候使用异步匿名Get页面来缓存页面,并通过判断Session或者Cookie来只对匿名访客展示缓存页面。
        而提交过访客表单信息的就放行展示动态页面。毕竟匿名访客的占比远比提交过访客信息表单的用户数量大。
        这种思路可行?

        1. 当时我的博客没有用原生评论,所以会有这个问题,插件的目的就是防止查数据库,所以我下一步需要在程序和数据库之间加一个缓存

          1. 顺便提个小要求,希望TpCache能加入对WinCache的支持,如果需要调试环境,我可以把架在家里的小主机开放一段时间让你用。非常期待能适配,没空闲时间适配的话也不是那么在意,因为可以先用着Windows上3.2.X版的Redis,虽然版本挺旧的,但是还是够用的。

  16. Hao Hao

    博主,最近看到网上您的缓存插件,请问如果是使用fastcgi缓存,有办法实现自动更新缓存吗

    1. nginx的缓存有命名策略,在页面更新的同时直接删除对应的文件即可

  17. 点保存后,出现域名+action/plugins-edit?config=TpCache&_=e80fed8d73fb74c03a07da5053e1cb25

    啥反应也没

    用的是Memcached

    1. 小五 小五

      同样的是提示这个

  18. 老高啊,能不能抽空更新下TpCache这个插件?再反馈个Bug,会缓存别人评论的登陆信息,太恐怖了。评论时直接用上一个评论者的用户信息直接评论。。。

    1. 小五 小五

      点保存后,出现域名+action/plugins-edit?config=TpCache&_=e80fed8d73fb74c03a07da5053e1cb25

      啥反应也没

      用的是Memcached typecho版本 1.0 php版本5.6

      1. 推荐使用 Typecho 开发版 + php 7.1.8 ,现在TE对这些新版的支持没问题的,然后老高的这个 TpCache 也去下载实时打包的代码版本。

        1. 还有有点问题,就是评论的地方

  19. 你好,请问下左下角的字(This page loaded in 0.001739 seconds)不能去掉么,我debug是关着的啊。PHP5.6.30。插件是最新的0.6.2

    1. 忘了说最新版的是0.7.0,最新版的是没这个问题的。

      1. 嗯,谢谢,我前天换了0.7的,确实没问题了。。。

    2. TpCache设置里关闭debug模式时同时勾选清除所有数据,然后确定保存。

      1. 我试过不行....难道你们的这样就可以了么。我现在是直接改源码屏蔽的

        1. 我们确实只需要在设置里关闭debug模式的同时勾选清除所有数据,然后确定保存即可。注意时同时,你要是分两次改是没效果的。

          1. 你清下你浏览器缓存试试吧

          2. 这个我知道的,都试过不行才来问问的。。。我把插件卸载,目录删除了,然后重新安装都不行,不管debug开不开都有那行字。。。

  20. memcached与Redis都配置了,我应该选哪个呢?

    1. 我现在用的是Redis,你去我的博客评论我才发现来自原生评论系统定位评论竟然没有触发缓存更新,难怪你总是另起一层进行评论。你先试试memcached,感觉bug可能会少点。

添加新评论