Назад | Перейти на главную страницу

Mod_cache не ведет журнал и не кеширует

Apache 2.2 на RedHat 6.3. У меня есть виртуальный хост, который настроен так:

<VirtualHost xxx.xxx.xxx.xxx:80>
ServerAdmin some@email.com
DocumentRoot /home/xxxxx/Sites/xxxxxxx.com/htdocs
ServerName xxxxxxx.com

ServerAlias xxxxxxxx.com

SuexecUserGroup xxxx xxxx
suPHP_UserGroup xxxx xxxx


## a cache hit will log -, while a cache miss will log 1.
SetEnv CACHE_MISS 1
LogFormat "%h %l %u %t \"%r\" %>s %b %{CACHE_MISS}e" common-cache
CustomLog /var/log/cache.log common-cache

<IfModule mod_mime_magic.c>
#   MIMEMagicFile /usr/share/magic.mime
MIMEMagicFile conf/magic
</IfModule>
<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>
CacheRoot "/var/www/cache"
CacheDefaultExpire 3600
CacheIgnoreCacheControl On
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
CacheMaxFileSize 1000000
</IfModule>
</IfModule>

# support perl + cgi
ScriptAlias /cgi-bin/ /home/ls414-100/Sites/xxxx.com/htdocs/cgi-bin/

<Directory /home/xxxx/Sites/xxxxx.com/htdocs/cgi-bin/>
      Options ExecCGI -Indexes -MultiViews
      AddHandler cgi-script cgi pl
</Directory>
</VirtualHost>

Но он не будет регистрировать попадания в кеш.

[25/Sep/2013:15:24:22 -0400] "GET /icons/stuff5.jpg HTTP/1.1" 304 - 1

Обратите внимание на «1» в конце, это означает, что он не кэшировался.

Любая помощь будет оценена.

У меня очень похожая установка для записи попаданий в кеш в мои журналы. Наиболее вероятные причины, по которым вы перестаете видеть попадания в кеш, исходя из моего опыта:

  • права доступа к каталогу кеша неверны.
  • закончилось место df -h или inodes df -ih в вашей файловой системе кеша

Я предлагаю вам пересмотреть свое решение использовать Apache httpd в качестве кеша; У меня было много проблем с этим в прошлом: странные ошибки, неполные изображения, действительно отстойное оправдание для инструмента обслуживания кеша, который является htcacheclean (вы используете это правильно?), Мое последнее разочарование (которое вызывает повторное -architect) заключается в том, что он не будет кэшировать 206 ответов (MP4, PDF).

Вы можете многое сделать, чтобы уменьшить количество объектов, которые вы запрашиваете у httpd для кеширования; отключение Vary User-Agent - большая победа. Вы также можете переписать заголовки запросов, связанные со сжатием, что помогает значительно сократить количество бесполезных вариантов, которые вы в конечном итоге кэшируете.

Все, что я вижу, это то, что вы заставляете CACHE_MISS иметь значение 1

SetEnv CACHE_MISS 1

Таким образом, в выводе журнала всегда будет 1. Взгляните на код ответа 304. Это означает, что запрошенный файл не изменяется, поэтому он может обслуживаться кешем браузера.