Apacheを実行しているWebサーバーがあります。キャッシュが有効になっていても同じですcache_disk_module
。
CacheRoot "/var/cache/httpd/mod_cache"
CacheDirLevels 1
CacheDirLength 1
キャッシュ内のオブジェクトのURLを一覧表示したいと思います。htcacheclean
フラグ付きバンドルコマンドを使用してキャッシュを照会すると、-A
64個のオブジェクトのみが返されます。
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」コマンドを実行してファイル数を数えると、.header
64個よりはるかに多くのファイルが得られます。
# 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
設定ファイルの内容と一致していることを確認してください。