WordPressのキャッシュで困った→消しちゃえの話 ( nginx proxy cache + wp super cache )

スポンサーリンク

WordPressでちょっと変更を加えたとき、nginxやWordPressのキャッシュが効いてて思ったように反映(更新)されなくて確認がめんどくさいって事ないですか?

expire時間も含め適切に設定されてたらそんな問題は出ないのかもしれませんが、何処のキャッシュがどうなってるのかと迷うのも面倒なので、潔く全部消してから、wgetでsitemap.xmlをクロールしてキャッシュを作り直す方法を書いておきます。

環境

nginx:
fastcgi cache

wordpress:
wp super cache、head-cleaner、XML Sitemap Generator

nginxのキャッシュが入ってるディレクトリ:
/var/cache/nginx

wordpressの各種キャッシュが入ってるディレクトリ:
/var/web/html/wp-content/cache

sitemap.xml
XML Sitemap Generatorが作ってくれるsitemapは2階層になってるので、2階層目をクロール。
-sitemap.xml
–http://www.example.com/sitemap-pt-post-2012-07.xml
–http://www.example.com/sitemap-pt-page-2012-07.xml

スクリプト

fastcgi cacheとwordpressのキャッシュディレクトリを消して作ってwgetでsitemap.xmlをクロール。

#!/bin/sh
mv /var/cache/nginx /var/cache/nginx.old
mkdir /var/cache/nginx
chown www.www /var/cache/nginx
rm -fR /var/cache/nginx.old

mv /var/web/html/wp-content/cache /var/web/html/wp-content/cache.old
mkdir /var/web/html/wp-content/cache
chown www.www /var/web/html/wp-content/cache
rm -fR /var/web/html/wp-content/cache.old 

wget -q http://www.example.com/sitemap.xml -O - |  egrep -o "http://www\.example\.com/sitemap[^<]+" | wget -q -i - -O - |  egrep -o "http://www\.example\.com/[^<]+" | grep -v sitemap |  wget -q -i -

コンテンツが多い所だったら、良い感じにいじって、priorityが高い物だけクロールするってしても良いのかもしれませし、UserAgentによってキャッシュを変えてるとか(携帯電話は別など)なら、wgetの -UでUserAgentを指定してあげるとよい感じになるのかもしれません。アクセスが多い所だと、急にキャッシュが無くなってギャッってなるので気をつけてくださいね。

コメント

タイトルとURLをコピーしました