修复TpCache一个无法触发缓存刷新的bug
in Tutorial with 10 comments
修复TpCache一个无法触发缓存刷新的bug
in Tutorial with 10 comments

我现在在用的是TpCache的0.7版本

长期使用一直遇到一个问题,就是登录状态下,去发表评论或者回复评论,没有触发缓存刷新

我居然傻傻地手动刷新缓存已经一年了···

这 ··· 好像有问题 ···

现在回去看看代码简单修改就可以修复这个bug了

bug的描述

解决bug

去Github下载0.7版本的TpCache

解压然后用编辑器打开Plugin.php

public static function activate(){}里,在return前,添加下面的代码

Typecho_Plugin::factory('Widget_Feedback')->finishComment = array('TpCache_Plugin', 'login_comment_update');

添加后是这样的

public static function activate()
{

    省略...

    //评论
    Typecho_Plugin::factory('Widget_Feedback')->finishComment = array('TpCache_Plugin', 'comment_update');
    Typecho_Plugin::factory('Widget_Feedback')->finishComment = array('TpCache_Plugin', 'login_comment_update');

    return '插件安装成功,请设置需要缓存的页面';
}

接着,找到comment_update所在的代码块位置,在其后面添加下面代码块

/**
 * 用户登录评论更新
 *
 * @access public
 * @param array $comment 评论结构
 * @param Typecho_Widget $post 被评论的文章
 * @param array $result 返回的结果上下文
 * @param string $api api地址
 * @return void
 */
public static function login_comment_update($comment)
{
    if (self::check_login()) return true;
    $req = new Typecho_Request();
    self::delete(str_replace($req->getRequestRoot(), '', $req->getReferer()));
}

保存,然后上传到服务器代替原来的文件

测试

这里的测试就是把上面的bug描述再走一次,测试结果是评论可以正常显示出来。

至此,TpCache的bug修复完成。

等等,这应该算是给TpCache添加一个新的触发缓存刷新的功能吧···

更新

等等 这 ··· 好像有问题 ···

最后最后最后,这个教程不严谨,有很多问题···

大家别用这个教程···还是有问题···

我现在用的解决方法,如下

找到

self::delete(str_replace($req->getRequestRoot(), '', $req->getReferer()));

替换为

if ($req){self::$cache->flush();}
Responses