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を指定してあげるとよい感じになるのかもしれません。アクセスが多い所だと、急にキャッシュが無くなってギャッってなるので気をつけてくださいね。
コメント