デフォルトのSquidでは、動的コンテンツのキャッシュを行わない。動的コンテンツは、“cgi-bin”または“?”とのマッチングによって判断される。Squidのこれまでのバージョンでは、この機能が“hierarchy_stoplist”および“cache deny”の設定によって有効になっていた。3.1以降のバージョンでは、この機能の有効化に「refresh_pattern (/cgi-bin/|\?) 0 0% 0」のような更新パターンが使われている。これにより、キャッシュ可能にできる動的コンテンツの提供サイトをバイパス規則で指定することが可能になった。たとえば、次のように更新パターンを設定すればよい。
refresh_pattern -i movies.com/.* 10080 90% 43200 refresh_pattern (/cgi-bin/|\?) 0 0% 0
この場合は、movies.comのコンテンツが“?”を含むURLで提供されていても、ほかの条件をすべて満たしていれば、このコンテンツはキャッシュされる。
古いバージョンのSquidでは、例外としたいコンテンツプロバイダについてアクセス制御リスト(ACL)を定義し、「cache deny」規則よりも前に「cache allow」を使ってこれを免除する必要があるだろう。以下は、SquidのWikiに記されている例である。
# Let the client's favourite video site through acl youtube dstdomain .youtube.com cache allow youtube # Now stop other dynamic stuff being cached hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? cache deny QUERY
Squidが発するDNS要求は多く、HTTP要求ごとにDNS要求を1つ出す。サーバにDNSキャッシュサーバをインストールし、これをSquidで利用すればDNS要求を減らすことができる。その方法については、こちらが参考になるだろう。
