
一つ前の記事で結構 Feed Crawler からのアクセスが多いことがわかった。
フィードは PubSubHubbub で利用する都合上、キャッシュしていない。しかもいまは 20 件記事を配信しているのでレスポンスが遅い。平均で 4 秒くらいかかっている。何とか効率的にキャッシュできないものかと思って FeedBurner を試してみることにした(サービス終了したかと思っていたけど、 .jp ドメインは終了しているものの .com の方は Google の中のサービスとして生き残っていた)。
FeedBurner からのアクセスの時だけ動的にフィードを生成し、それ以外の UA からのアクセスのときは FeedBurner の URL にリダイレクトするようにしてある。この記事を公開してちゃんと機能しているか確認したい。
追記
PubSubHubbub が機能しなくなってしまった😰 Googlebot に対しても動的なフィードを読ませないといけないのかもしれない…
追記 2020-04-08
PubSubHubbub の Google の Crawler は FeedFetcher-Google
という文字列を含んでいるようだったので、以下のような記述を Nginx の設定ファイルに加えた。
if ($http_user_agent ~* (FeedBurner|FeedFetcher-Google\;)) {
proxy_pass http://puma;
break;
}
なぜ ;
(セミコロン)を付けているのかというと、 Feedly などの Crawler も FeedFetcher-Google
を名乗っているから。 Google の Crawler は FeedFetcher-Google
のすぐ後ろにセミコロンを付けている。

Google と FeedBurner の Crawler にのみ本体のフィードを読ませ、それ以外の Crawler には FeedBurner のフィードを読ませるようにしている。