^ 回到顶部
  • 人生没有定律,每个人都有自己的节奏
  • 若文中代码有问题,可能是少了几个问号,留言一定会解决!
  • 希望你的坚持,都是因为热爱,而不是因为不甘心
  • 站点文章结尾新增了赞赏通道
  • 那些不愿意让你吃亏的人,才是真正值得你深交的人,也是值得你付出时间的人

xiu主题启用七牛cdn缓存后无法评论解决办法

之前陌小雨分享了一个启用七牛后知更鸟主题无法评论解决办法,这不又换回了我喜欢的 xiu 主题么,发现还是有这个问题,因为模版结构的问题,按那个办法无法解决,经过摸索,只好通过代码方式然后辅以陌小雨我聪明的大脑,就实现了骑牛的 cdn 缓存啦:有需要的朋友可以借鉴下:

//水煮鱼的七牛 CDN 插件代码版
define('FocusCDNHost','https://dedewp.com'); //wordpress 网站网址
define('FocusCDNRemote','http://cdndedewp.qiniudn.com'); //cdn 域名
define('FocusCDNIncludes','wp-content/uploads'); //设置加速目录
define('FocusCDNExcludes','.php|.xml|.html|.po|.mo|.js');  //设置文件白名单
define('FocusCDNRelative','');
function do_cdnrewrite_ob_start() {
    $rewriter = new FocusCDNRewriteWordpress();
    $rewriter->register_as_output_buffer();
}
add_action('template_redirect', 'do_cdnrewrite_ob_start');
class FocusCDNRewriteWordpress extends FocusCDNRewrite
{
    function __construct() {
        $excl_tmp = FocusCDNExcludes;
        $excludes = array_map('trim', explode('|', $excl_tmp));
        parent::__construct(
            FocusCDNHost,
            FocusCDNRemote,
            FocusCDNIncludes,
            $excludes,
            !!FocusCDNRelative
        );
    }
public function register_as_output_buffer() {
    if ($this->blog_url != FocusCDNRemote) {
        ob_start(array(&$this, 'rewrite'));
        }
    }
}
class FocusCDNRewrite {
    var $blog_url    = null;
    var $cdn_url     = null;
    var $include_dirs   = null;
    var $excludes    = array();
    var $rootrelative   = false;
function __construct($blog_url, $cdn_url, $include_dirs, array $excludes, $root_relative) {
    $this->blog_url   = $blog_url;
    $this->cdn_url    = $cdn_url;
    $this->include_dirs  = $include_dirs;
    $this->excludes   = $excludes;
    $this->rootrelative  = $root_relative;
}
protected function exclude_single(&$match) {
    foreach ($this->excludes as $badword) {
        if (stristr($match, $badword) != false) {
            return true;
        }
    }
    return false;
}
protected function rewrite_single(&$match) {
    if ($this->exclude_single($match[0])) {
        return $match[0];
    } else {
    if (!$this->rootrelative || strstr($match[0], $this->blog_url)) {
        return str_replace($this->blog_url, $this->cdn_url, $match[0]);
    } else {
        return $this->cdn_url . $match[0];
        }
    }
}
protected function include_dirs_to_pattern() {
    $input = explode(',', $this->include_dirs);
    if ($this->include_dirs == '' || count($input) < 1) {
        return 'wp\-content|wp\-includes';
    } else {
        return implode('|', array_map('quotemeta', array_map('trim', $input)));
    }
}
public function rewrite(&$content) {
$dirs = $this->include_dirs_to_pattern();
$regex = '#(?<=[(\"\'])';
$regex .= $this->rootrelative
? ('(?:'.quotemeta($this->blog_url).')?')
: quotemeta($this->blog_url);
$regex .= '/(?:((?:'.$dirs.')[^\"\')]+)|([^/\"\']+\.[^/\"\')]+))(?=[\"\')])#';
return preg_replace_callback($regex, array(&$this, 'rewrite_single'), $content);
}
} 

应该可以把插件的目录也一并加速的,剩下的你们就自己鼓捣去吧!哈哈。

让小雨知道,这篇文章帮到了你

展开阅读全文

评论 5

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 书江湖
    你好,代码加在哪里啊。用WP Super Cache该怎么设置呢回复
    • 陌小雨网站管理员
      @书江湖 加到主题的function.php文件中回复
      • 书江湖
        @陌小雨 好的,谢谢。回复
      • 书江湖
        @陌小雨 75行提示:PHP Parse error: syntax error, unexpected ':',这个怎么解决啊? $regex .= $this->rootrelative ('(:'.quotemeta($this->blog_url).')') : quotemeta($this->blog_url);回复
        • 陌小雨网站管理员
          @书江湖 重新复制下试试 不好意思 之前折腾代码高亮插件 文章中有些代码被玩坏了回复
  2. 木先森
    我的博客用了百度云CDN,留言看看显示是哪个节点。回复
  3. Amateurs_ds
    七牛云非要拍照才给标准帐号待遇,换国内空间感觉速度也不是很慢,直接弃用了回复
  4. 大刘子
    没缓存了回复

登录

忘记密码 ?

切换登录

注册