WP-Cache+SK2

最近用了WP-Cache,然後發現他和Spam Karma2相處不愉快。(好像很多人都和sk2相處不愉快啊...)

原因還滿簡單的,因為Spam Karma 2把一些動作攔掉,所以WP-Cache沒辦法正確收到,或者收到了,comment status也永遠都是spam。

解法有二,第一個是把wp-cache裡面判斷是否為approved comment的那幾行槓掉,簡單說就是只要有留言就叫他flush,不管有沒有approve。

因為每天都有成千上百的spam,所以我覺得這樣不太好(spammer來,產生cache,結果他一留spam又被flush...),於是我就跑去動sk2的腦筋。一開始我是在他發notify mail的地方插一個wp-cache flush的指令。不過後來想想,用sk2的人很多,做成sk2的plug-in應該比較容易讓大家使用,所以就改成一個sk2的plug-in。

下載zip後解開,把php檔放到sk2_plugins目錄下,應該就可以用了。

注意:

  1. 請先升級到wp-cache 2.1.0並把舊cache先刪除,之前版本有一些metadata的問題也會導致cache無法flush。

  2. 關掉sk2裡面的'encrypted payload'檢查,理由如後。



Update: 這邊提到了一個我沒有注意到的問題。sk2會偷塞一些動態的hidden field/javascript來驗證是否comment是被真正的browser發送,當然遇到wp-cache就破功了。

encrypted payload中含有一個'ip'的field,根據client的ip來產生,而一旦用了wp-cache,encrypted payload就會被固定住。

這會導致真正有人在留言時,ip field和真正的客戶端對不起來,該留言的karma會被扣2.5分,導致一堆人的正常留言進不來。

本來想用wp-cache的mfunc(部份動態內容)來解決這個問題,不過wp-cache在動作時,整個wordpress環境幾乎都是沒有被載入的。所以當然sk2 plug-in的函式在這種情形下也沒有辦法被呼叫到,要把整個payload的東西移出來是一件相當麻煩的事(取db資料等等功能都是完全沒辦法用的),以效率問題來說也不是很好,想想還是算了。

留言

  1. 嗯,我剛升上去了,看看這樣子會不會再讓 loading 下降一點 :)

    回覆刪除

張貼留言

這個網誌中的熱門文章

文言文

談談台灣人使用統傳漢字的優越心態

台灣工程師常唸錯的英文單字