特定のページをキャッシュから除外する

squidを利用してWebページをキャッシュするのは良いのですが,ログインが必要となるページをキャッシュするときは注意が必要です.

例えば,マシンAとBが同じsquid経由でWebページを見ているとします.Aから○○サイトでログインを行うと,その情報がCのsquidにキャッシュされます.その後,Bから○○サイトにアクセスすると,squidはキャッシュから○○サイトのWebページを返すので,場合によってはまずいことになります(○○サイトのログイン後にしか見れない情報が見れるなど).

squidやWebの仕組みを理解していないので,厳密な説明をすることができないのですが,大体こんな感じです.昔,学内ネットワークからmixiにアクセスしたとき,他人のアカウントでログインした状態でページが表示がされたことがあります.おそらく,プロキシがキャッシュしてはいけない情報をキャッシュしていたのだと思います.

それはさておき,squidにおいてある特定のページをキャッシュから除外する場合はsquid.confに以下の記述をすれば恐らくOKです.hatena.ne.jpをキャッシュしない例です.

acl QUERY urlpath_regex cgi-bin \? hatena.ne.jp
no_cache deny QUERY

おそらく,デフォルトの状態で

acl QUERY urlpath_regex cgi-bin \? 
no_cache deny QUERY

までは書かれていると思いますので, "\?" の後にドメインを追加するだけです.

squidを適当に運用するのは簡単ですが,本気で運用するは難しいです.設定ファイルの内容を理解してないので,勉強したいところです.