キャッシュ表示を導入

negitaku.org
サーバー負荷対策として、利用しているテンプレートエンジン『Smarty』のキャッシュ機能を利用してみることにしました。

最もアクセスの多いインデックスページのデータを5分ごとにキャッシュして、キャッシュがある場合はそちらを読み込むことで負荷をかけないようにするという試みです。

これによってサイト利用においてちょっとした問題が発生するかもしれません。

懸案事項

  • 表示データがリアルタイムのものでなくなる(5分前のものの可能性がある)
  • 実験しながらの導入なので、何かしらの不具合が起きる可能性がある
  • ログインしているにも関わらず、indexのみログイン状態で表示されない

コメントしたあとや、プロフィールを変更したあとに、インデックスに反映されなくてもそれはキャッシュ表示をしているせいであって、実際にデータが登録されていないわけではありません。
また、3番目のログイン状態についても同様で、実際にはログインはしていますがキャッシュ正しく表示されなくなってしまっています。

いまのところ、以前のような頻繁なエラーは出ていないようですので(たまにでますが)、上記のような懸案事項があるもののまともに見れない状態よりはマシなのでしばらくこのまま実験を続けてみようと思います。

また、403が出ても閉鎖したわけではありませんのでよろしくおねがいします :]

一時的な変更

キャッシュ表示により、インデックスに他人のログイン情報が表示されてしまうという問題が発生したため、インデックスでのログイン表示項目を一時的に消しました。
インデックス以外では表示されますので、プロフィールの変更やログアウト等はインデックス以外のページに飛んでからお願いします。

いろいろとご不便をおかけしてもうしわけありません。

この対策でもどうしようもなくなった場合はサーバーの変更を検討しないとダメですね…。

わかっている不具合

  • ログイン情報がキャッシュされてしまう → インデックスのみ非表示に
  • インデックスで次ページへ移動してもキャッシュされたインデックスがでる → 非表示に(タイミングによって次ページがキャッシュ化されてしまうため。左メニューの「アーカイブ」で代用してください)

困った。

コメント

Avatar JamesB

ニュースなどはRSSリーダで見たほうが負荷が軽減されますよね?

Avatar Yossy

RSSのファイルもPHPなので、これも静的ファイルにしないといけなそうです。
処理が重いのか、データベースへのアクセスが多すぎるのかなどいろいろと問い合わせているけど混み合っているらしくてなかなか返信がもらえない状況です。

対策も完璧ではないようでエラーでますなあ…。

Avatar JamesB

なるほど。
しかしそれでも呼び出すphpの数は減りそうなので、
コメント以外のことはとりあえずRSSで直読みしておきますね。

ブラウザの「戻る」をしたところ、たまにエラーがでたりしますが、
なによりニュースそのものが見れるだけでも対策GJです。