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目錄下,應該就可以用了。
注意:
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資料等等功能都是完全沒辦法用的),以效率問題來說也不是很好,想想還是算了。
原因還滿簡單的,因為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目錄下,應該就可以用了。
注意:
- 請先升級到wp-cache 2.1.0並把舊cache先刪除,之前版本有一些metadata的問題也會導致cache無法flush。
- 關掉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資料等等功能都是完全沒辦法用的),以效率問題來說也不是很好,想想還是算了。
嗯,我剛升上去了,看看這樣子會不會再讓 loading 下降一點 :)
回覆刪除[...] Original post by priv [...]
回覆刪除