PSPカスタムテーマあぷろだをご利用いただいてる方、どうもありがとうございます。
おかげさまでアクセス数も順調に増えておりまして、特に昨年末、学校や職場が冬休みに入ったころから増えたアクセス数が、冬休み終了後もそのまま減らずに続いている感じです。
たいへんありがたい話なのですが、混雑する時間帯は「503 Service Temporarily Unavailable」がよく出るようになってしまい、ご迷惑をお掛けしております。
というわけで、やるやると言いつつ後回しになっている「ユーザの1行コメント機能」をさらに後回しにして、軽量化作業を優先して進行中です。金曜の夜に第1弾を実施しました。(たぶん第5弾くらいまであるかと......)
「軽量化」というのは、具体的には「サーバのCPU負荷を減らす」作業ですが、裏テーマとして「サーバからの転送量を減らす」というのもあります。今回は、「アクセスがあるたびに毎回CGIで動的にHTMLとして生成して転送していたテーマの一覧」を、「あらかじめ生成しておいた静的なリストだけを転送し、ブラウザ側でJavaScriptでHTMLとして構築する」という形式に変更しました。
「サーバの負担を減らす」ということは、考えようによっては「負担をクライアントに転嫁する」ということでもあるので、非力なマシンをお使いの方は、もしかしたら「軽量化したという割には、むしろ前より重くなってないか?」と感じるかもしれません。なるべくそういうことのないようにしたいと思っていますが...。
ちなみにPSP搭載ブラウザからアクセスした場合は、以前のままだったりします。JavaScriptがどこまで動くかの検証をする時間が取れなかったので。
PSPのブラウザは、ページをロードし終えて一度ページを表示完了しちゃうと、その後の書き換えがどうもうまく働かないみたいで、ちょっとクセが強いのです。
ところで今回、「転送量を減らす」&「クライアントでの処理量は増やすけど体感速度をなるべく落とさない」という2つの目的を満たすために、真面目にAjaxを使うことにしました。prototype.jsは以前使ったことがありましたが、今回は最近評判の良いjQueryに挑戦してみました。
jQueryは非常に使いやすいライブラリで、ググって上位に出てきた日本語ページ2~3件にざっと目を通せば、とりあえず何とかなりました。
jQuery開発者向けメモ(基本・サンプル)
同(リファレンス)
jQuery入門
上2つはバージョン1.1系を元に書かれているので、最新が1.2.2となっている今ではちょっと古いかもしれませんが、概要をつかむには差し支えありません。
リファレンスは、細かいことが知りたくなったら、一次情報(API Reference)を見たほうが早いです。英語ですが。
1日で書いたコードなので、Ajaxの非同期通信まわりがちょっとまだ適当で、たまにDL数が表示されなかったりすることがあります。そういうのはおいおい直していきますが、でも勢いだけでAjaxなコードが書けちゃうんだから、jQueryすごいなあ...。
ただ、Ajax化したことによる大きな弊害があって、それはブラウザの履歴機能が使えないこと。
具体的には、
・一覧の1ページ目を見てて、2ページ目に移動して、1ページ目に戻りたいときにブラウザの「戻る」ボタンが使えない
・一覧の3ページ目からテーマの詳細(ダウンロードページ)に飛んで、ブラウザの「戻る」ボタンで戻ると、一覧の3ページではなく1ページに戻ってしまう
...といった違和感があると思います。
検索したところ、jQuery用のhistoryプラグインというのがあったので、それを使えば解決できそうですが、まだ評価してません。これも今後の課題ということで。
しかし便利です、jQuery。なんで今まで使ってなかったのかが不思議なくらい。
あぷろだ、さっそく遊んでみたんですが、新着一覧の4ページ目が表示できませんでしたよ。
Firebugで見てたら、data has no propertiesってエラーが出てました。
ちなみにjQuery、未体験です。
>4ページ目が表示できない
ご指摘ありがとうございます。月曜の夕方におこなった軽量化作業(第2弾)でエンバグしてしまいました…修正しましたが、引き続き同じエラーが出る場合はブラウザのキャッシュ削除&スーパーリロードしてみてください。
jQueryはUI的な面が有名ですが、むしろDOM操作やAjax関係のAPIの良さにかなり感動しました。見通しが良くなるので、「あ、これ、こことここを非同期でロードすれば、もっと高速化できるな」というようなことが判ってしまうのが素敵です。