
APIの接続制限に到達してしまったらNotFound!ではまだまだ足りなかった
ヘッドライン
先般の記事で、APIの接続制限に到達してしまったらAPIのエラーを出力せず404エラー(NotFound)を出力するように設定して満足していたが、実はこれではだめだ。
なぜなら、Googleなどの検索エンジンロボットがその時来たらファイルがないと認識されてしまう。
これはまずい。情報は存在するけど、情報が単に古いだけ、でもAPIでは新しい情報を引くことができない(制限があって。。)と、いう場合には古い情報でいいのでDBから引っ張るように仕様変更した。
次々に問題が発生するが一つ一つ対処していく。
もちろん存在しないIDなどを引いた際には404エラーは出力してほしいが、あるのにないといわれるのはもっとつらいものがある。
なので、このような対応をした。
これで、行ったことは、古いID情報から新しいID情報へ301転送をかけ、そして、IDが存在しなければ404Notfound、存在しているIDで、情報が古い場合はAPIから新しい情報を引く、さらに、APIへの過剰接続によりAPIに接続制限がかかった場合は古いままの情報を引くように作った。
これで、ほとんどの場合、存在していれば何かしらの方法で情報を引き出し、まったく問題がなく、情報が古い場合には情報が更新されるようになった。
まず、404notfoundを出さないようにしておけば、実はこのあたりは簡単なのだが、実はNotfoundを出さないWEBサイトというのは検索エンジンでは嫌われ評価が下がる。
無い情報は無いと明確に打ち出すことで、ロボットも、あるものと無いものの境界線を認識し、クロールをまともに行ってくれる。
どこまで行ってもNotFoundがないということは無限にクロールしていくことにつながるのだ。
実はこれが重要で、今までAPIで無限に引き、エラーで引けない情報があっても、WEBサイト上では404ヘッダではなく200ヘッダで返していた。
そうすると、ロボットは評価してくれなく、悩んだ日々があった。
404ヘッダを出力するようにした途端、アクセスが爆発したという経験を以前にしており、最近はその枠組みの中から逸脱した場合は404ヘッダを返すことにまずは頭を走らせるようになった。
また、様々な事情から今までのファイルパス(URL)を変更したかったときは勝手に変えて、登録するサイトマップを変更してよかったよかったと。そういう対応をし、旧来のURLへアクセスした際には404ヘッダで返すようにしていた。
私もばかなものだ。
最近は、同じ情報でURLが変更になった際は旧来のURLからは301ヘッダをつけて新しいURLへ転送をかけるようプログラムを書くようになった。
今回も開発してクロール申請を出した直後に致命的なURLに関する問題に遭遇し、URLのルールを変更したいと考えた。
旧来のURLから情報を引き出し、対応するIDを引き出せた際には、新しいURLへ301リダイレクト転送をかけるようにプログラムコードを書いた。
そうしたことで、問題なく以降指示を、プログラム、ロボット、そしてユーザの利用するブラウザに認識してもらえるようになった。
もちろんこのプログラムも情報ペアが引き出せない場合には404ヘッダを出力するようにしたことで無限に広がることを抑えた。
ずいぶん柔軟になったものだ。
しかし、これでもまだまだソースコードはデザインを含んでも500行に満たない。
これも、そもそものデータがきれいに整理されていることと、APIのルールが理解できているからできることである。
今回、その対応をするのにif文を使った。
if文から条件に合わせて次々にこの対応、この対応と書いていくのだが、一瞬迷いもしたが、特問題もなく特殊な終了コマンドなど入力することもなく、次へ次へと抜け出るプログラムをかけた。
現在、ほとんどエラーを出力しなくていいときにエラーを出力しなくなったこと、不必要な情報はエラーで返すことに成功。
それなりに、WEBサイトとして機能するようになった。
それもあってか、解説してまだ1週間ほどだが、1日のアクセスは500近くまで到達した。ありがたい。
まとめ
この種のサイトを作った場合に、自己満足、自分がアクセスしたときのことだけを考えて制作してはいけない。
もしかしたら、大量のアクセスを獲得するかもしれない。それによってAPIの制限に引っかかるかもしれない。
この種のものを作るときに言われるのは、『そんなにアクセスが上がるもんではないからそこまで気にしなくていいよ』です。
アクセスは【あなたが】決めることではなく、インターネット上に数多いるユーザが決めることなので、そんなことはわからないのです。
それに、そんなアクセスが上がらないと確信をもって言えるサイトを作る意味があるのか。ということで、普通はアクセスは上がると考えて作るのが当然。
ただ、あがるとわかっていても気づかない点はたくさんあるだろう。それは実際にアクセスが増えてこないとわからない。
私は今回順調にアクセスが伸びたことで、気づきも多く、そして、何が問題になるのか把握しやすかったので対応も即座に行うことができた。
次は、アクセスができるところまではうまくできたので、次は成果が上がるようないわば滞在時間を伸ばし、売り上げにつながるようにデザイン的な面やレイアウト的な面を注視して改良を重ねたいと思う。