WordPress使用七牛CDN導致ajax評論報錯{“error”:”get from image source failed: E405″}
編輯:狂族晨曦 來源:建站分享,WordPress技巧 日期:2015-09-02 閱讀: 3,762 次 5 條評論 » 百度已收錄
起因:
最近流量不夠用了,所以就開始使用七牛CDN用以減少流量消耗。七牛的免費CDN配額還是很給力的,以前不想用完全是因為用的七牛官方WordPress插件完全沒有作用,沒有效果,所以棄用。后來發現用水煮魚的七牛插件才是正解,所以才開始啟用。
本以為沒有問題了,結果發現用七牛CDN之后,文章頁的返回頂部出現BUG了。本來嫌麻煩,也就不想修復了。但是這卻一直成為了心中的梗,強迫癥涌上心頭,決定好好研究一下怎么回事。
結果,返回頂部還沒有解決,卻意外的發現評論模塊又出了問題,也就是題目中說的報錯:{"error":"get from image source failed: E405"}。如下:

原因:
經過百度后了解到,確實是CDN的問題。CDN把你的comments-ajax.js文件給緩存走了,結果導致路徑錯誤,這時候我們有兩種選擇來修復這個問題。
1、修改js文件讓它能夠支持你的CDN路徑
2、將這個文件單獨排除在CDN的鏡像列表之外
解決方案:
1、修改comments-ajax.js文件
這種方法的好處是你依舊可以體驗完整的CDN鏡像服務,你需要打開你主題目錄下的comments-ajax.js文件然后修改它,找到如下的代碼段(一般應該是在開頭的)
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('7xjad9.com1.z0.glb.clouddn.com','www.cnidcc.cn');
這樣,修改完成后應該是下邊的樣子
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('7xjad9.com1.z0.glb.clouddn.com','www.cnidcc.cn');
然后將文件更新上傳到你的服務器,再到七牛空間管理去刷新該文件。
2、添加CDN鏡像例外
使用WP Super Cache來開啟CDN鏡像,直接將comments-ajax.js這個js文件排除在鏡像列表之外,雖然加載的時候多了一個js文件,但省去了對付七牛那個緩慢的刷新過程,其實還是很不錯的,立竿見影啊~
WP Super Cache在WordPress后臺插件安裝中可直接搜索安裝。
方法:找到WP Super Cache的CDN頁面,然后在下邊找到“如果是之前有則排除”這一項,將comment-ajax填寫進去就好了。如下圖(點擊放大,放大后按“F”鍵放至最大):

這樣,就只有一個文件被排除在外了。
好了,大家去試試吧,有任何疑問可在底部討論區提出。
轉載請注明出處來自http://www.cnidcc.cn/wp_syqncdndzajaxplbc.html

川公網安備 51011202000104號
js_url = js_url.replace(‘7xjad9.com1.z0.glb.clouddn.com’,’www.cnidcc.cn’);
你確定你沒寫錯?
應該是這樣吧:
var js_url = js_url.replace(‘7xjad9.com1.z0.glb.clouddn.com’,’www.cnidcc.cn’);
@mashiro: 沒有加var也解決了問題
你好,按照方法設置了還是不行呢。
@木禾網: 看看是不是CDN上還有你的js文件,然后那個文件的內容沒有更改。