"-A"フラグを持つhtcachecleanは、64個のキャッシュエントリのみを一覧表示します。残りはどこにありますか?

"-A"フラグを持つhtcachecleanは、64個のキャッシュエントリのみを一覧表示します。残りはどこにありますか?

Apacheを実行しているWebサーバーがあります。キャッシュが有効になっていても同じですcache_disk_module

    CacheRoot "/var/cache/httpd/mod_cache"
    CacheDirLevels 1
    CacheDirLength 1

キャッシュ内のオブジェクトのURLを一覧表示したいと思います。htcachecleanフラグ付きバンドルコマンドを使用してキャッシュを照会すると、-A64個のオブジェクトのみが返されます。

    htcacheclean -A -p/var/cache/httpd/mod_cache

出力:64行、各行は次の例のようになります。

    http://<ACTUAL-URL-HERE> 823 102014 200 0 1603846099818215 1603849699818215 1603846099807137 1603846099818215 1 0

間の項目する正しく表示され、予想されるURLを含む出力を取得します。

ただし、「find」コマンドを実行してファイル数を数えると、.header64個よりはるかに多くのファイルが得られます。

    # find /var/cache/httpd/mod_cache -name '*.header' | wc -l
    30440
    #

Apacheバージョンは現在CentOS 7.8展開バージョン2.4.6で利用可能で、さまざまなバックポートパッチが含まれています。

マニュアルページから:

   -A     List  the  URLs  currently stored in the cache, along with their
          attributes in the following order: url, header size, body size, status,
          entity  version,  date,  expiry,  request  time, response time, body
          present, head request.

...

    LISTING URLS IN THE CACHE
           By passing  the -a or -A options to htcacheclean, the URLs within the
           cache will be listed as they are found, one URL per line. The -A option
           dumps the full cache entry after the URL, with fields in the following
           order:

...

何が起こっているのかについての手がかりを提供できる人はいますか?キャッシュされたオブジェクトURLの完全なリストをどのようにダンプできますかhtcacheclean

答え1

htcachecleanはURLのハッシュ表現を英数字と@と_または64文字の可能な文字にエンコードします。CacheDirLength 1これを設定すると、CacheDirLevels 1すべてのサイトURLのキャッシュが分割される64のディレクトリが提供されます。

残りのハッシュ(ディレクトリ名に使用されていないハッシュ文字)と.headerで構成されるサブディレクトリ名の末尾には、.varyも表示されます。ほとんどの場合、サーバー構成では以下を許可します。

Header set Vary "Accept-Encoding"

特定のURLに対してさまざまなバージョンのデータキャッシュをトリガーする別のヘッダーがあります。一般的に省略されるのは、可能な値が多いUser-Agentです。その場合、複数の異なるブラウザが同じURLにアクセスすると、多数のヘッダファイルがこれらのディレクトリの下にキャッシュされる可能性があります。

すべての詳細を返す必要がない場合をhtcacheclean -A使用してみてくださいhtcacheclean -a。 URLは同じですが、解析するのは簡単です。

最後に、キャッシュディレクトリが/var/cache/httpd/mod_cacheデフォルトディレクトリではないと述べました/var/cache/[httpd or apache2]/mod_cache_disk。移動しても問題ありませんが、ディレクトリが/etc/default/apache-htcacheclean設定ファイルの内容と一致していることを確認してください。

関連情報