2009-07-17[n年前へ]
■WEBサーバ・アプリを「少し」改造しました
hirax.netが動いているWEBサーバのアプリを少し改造しました。改造した点は、「少し」はキャッシュを使うようにしたというところです。改造した理由はサーバの負荷を軽くし・読む側の待ち時間を短くするため、です。
といっても、大幅な作り直しは面倒だったので、結局、「少し」の手直しだけで済ませてしまいました。その結果、残念ながら、「少し」の効果しか出ていないようにも思われます。今さらながらに、「Railsで開発するときにはキャッシュを予め想定に入れておく」ということの重要さを感じさせられました。
現状、hirax.net内のページでは、最新記事一覧や、関連記事一覧などを表示するために、RJSを多く使っています。そうした、RJSを吐くActionを(改造が面倒だったので、そのまま)ファイル・キャッシュさせようとして、少しはまってしまいました。RJSを吐くActionのキャッシュ・ファイルをApacheで送出する場合、そのままではContent typeが"text/plain"になってしまいます。そこで、mod_rewiteで、Content typeを"text/javascript"に書き換えてやらないと、RJSを送出するActionをファイルキャッシュで置き換えることができなかった、というのが(ハマりの)「大雑把なあらすじ」になります。他にも、Urlエンコードされた日本語がURLに入っていると、キャッシュファイルが文字化けしたり…といったあたりにも、はまりました(そして、対策をすることをあきらめてしまいました)。
やはり、コントローラから作り直した方が良いのだろうと思います。しかし、10年前からあるURL構造をそのまま使いまわすことを念頭に置くと、キャッシュがきちんと働くように作り直すのはなかなか面倒そうで、時折「少し」の手直しをする程度になってしまいそうです。とはいえ、トータルの作業量は、(少しの手直しを繰り返すより)作り直した方がずっと少なかったりすることもよくある、ようにも感じるのですが…。