- A+
之前用emlog的时候,我也有用过七牛云作为加速,搬来WordPress后,也和大部分人一样用起我爱水煮鱼的七牛云存储插件。
刚开始用的时候,我没有把JS文件设置成要缓存的文件,因为我刚开始用的时候发现设置后评论报错{“ERROR”:”GET FROM IMAGE SOURCE FAILED: E405″},然后也就没去管他,反正能用就行了。。。
这几天想找找能不能找到解决方法。
百度了下,问题为使用七牛CDN导致AJAX评论错误。
解决方法呢,普遍是下面2种:
第一种:
修改commonts-ajax.js使之支持CDN路径,具体方案如下:
找到如下代码:
- var i = 0, got = -1, len = document.getElementsByTagName('script').length;
- while ( i <= len && got == -1){
- var js_url = document.getElementsByTagName('script')[i].src,
- got = js_url.indexOf('comments-ajax.js'); i++ ;
- }
在后面加入代码:
- js_url = js_url.replace('ex.bkt.clouddn.com','www.wxlog.cn');
ex.bkt.clouddn.com改为你的七牛提供的二级域名或者你的七牛云绑定域名,www.wxlog.cn修改为你的域名。
然后更新commonts-ajax.js文件。
这样就可以解决这个问题了。(但是我更新了好像没什么反应,不知道是不是我那里出了问题,直接跳过。。。)
第二种:
直接排除缓存这个文件
使用WP-Super-Cache插件的CDN功能添加例外选项,如下图:
但是我之前用过这个插件,总是缓存不成功,最终还是放弃这个插件,没有再使用,所以这方法对我也没用。。。
最后总算找到一个修改七牛CDN插件的方法:
打开插件目录,找到wpjam-qiniutek.php文件打开,定位至100行return $html前,插入以下代码:
- $html = str_replace('http://加速域名/wp-content/themes/主题/js/comments-ajax.js', 'http://原网站域名/wp-content/themes/主题/js/comments-ajax.js', $html);
原理:
插件已经修改静态文件原目录至CDN目录,只需要再把comments-ajax.js这一个文件的目录改回来即可,其中第一个路径是CDN服务器上comment-ajax.js的路径,需要把它替换为第二个路径,即网站原文件路径,具体根据你的网站自己稍作修改即可,这样既体验了七牛CDN,又解决了AJAX评论错误的问题。