WordPress使用七牛CDN導(dǎo)致ajax評(píng)論報(bào)錯(cuò){“error”:”get from image source failed: E405″}
編輯:狂族晨曦 來(lái)源:建站分享,WordPress技巧 日期:2015-09-02 閱讀: 3,763 次 5 條評(píng)論 » 百度已收錄
起因:
最近流量不夠用了,所以就開(kāi)始使用七牛CDN用以減少流量消耗。七牛的免費(fèi)CDN配額還是很給力的,以前不想用完全是因?yàn)橛玫钠吲9俜絎ordPress插件完全沒(méi)有作用,沒(méi)有效果,所以棄用。后來(lái)發(fā)現(xiàn)用水煮魚(yú)的七牛插件才是正解,所以才開(kāi)始啟用。
本以為沒(méi)有問(wèn)題了,結(jié)果發(fā)現(xiàn)用七牛CDN之后,文章頁(yè)的返回頂部出現(xiàn)BUG了。本來(lái)嫌麻煩,也就不想修復(fù)了。但是這卻一直成為了心中的梗,強(qiáng)迫癥涌上心頭,決定好好研究一下怎么回事。
結(jié)果,返回頂部還沒(méi)有解決,卻意外的發(fā)現(xiàn)評(píng)論模塊又出了問(wèn)題,也就是題目中說(shuō)的報(bào)錯(cuò):{"error":"get from image source failed: E405"}。如下:

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

這樣,就只有一個(gè)文件被排除在外了。
好了,大家去試試吧,有任何疑問(wèn)可在底部討論區(qū)提出。
轉(zhuǎn)載請(qǐng)注明出處來(lái)自http://www.cnidcc.cn/wp_syqncdndzajaxplbc.html

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