"-A" 플래그가 있는 htcacheclean은 64개의 캐시 항목만 나열합니다. 나머지는 어디에 있습니까?

"-A" 플래그가 있는 htcacheclean은 64개의 캐시 항목만 나열합니다. 나머지는 어디에 있습니까?

Apache를 실행하는 웹 서버가 있습니다. 캐싱이 활성화된 경우에도 마찬가지입니다 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구성 파일의 내용과 일치하는지 확인하세요.

관련 정보