ОС моего сервера:
Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial
Apahce version:Apache/2.4.18 (Ubuntu)
Я очень сожалею, что мой плохой английский язык, буду стараться изо всех сил описывать это ясно.
Я добавил директивы кэша к своим конфигурационным файлам и включил после modules:cache, cache_disk, истеките, заголовки.
Если кэш был нов (Время истечения срока составляло 10 секунд в моем файле), хром получил ответ с кодом 200 от локального кэша. Но когда кэш был устаревшим, апачский сервер не проверял, ново ли содержание все еще прежде, чем служить устаревшему содержанию клиенту.
Chrome получил код 200 снова и никогда не получал код 304. Что случилось с моей конфигурацией? Существуют мои конфигурации:
1./etc/apache2/apache2.conf
Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
ServerName smt.lhc.com
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel debug
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
2./etc/apache2/mods-available/cache_disk.conf
<IfModule mod_cache_disk.c>
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
</IfModule>
3./etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/smt-web
#DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/smt-web">
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ index.html [L]
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
CacheIgnoreHeaders Set-Cookie
<Location />
CacheEnable disk
CacheHeader on
CacheDefaultExpire 600
CacheMaxExpire 86400
CacheLastModifiedFactor 0.5
ExpiresActive on
ExpiresDefault "access plus 10 sceonds"
Header merge Cache-Control public
FileETag All
</Location>
</VirtualHost>
Ваша конфигурация смотрит точно то же как Цифровая Океанская конфигурация https://www.digitalocean.com/community/tutorials/how-to-configure-apache-content-caching-on-ubuntu-14-04
Можно добавить %{cache-status}e
к LogFormat
строка для входа состояния кэша в access.log
из Apache.
Я использую ту же конфигурацию как выше, но в моем случае кэш всегда служит тому же содержанию, не имейте значения, что я нажимаю на домашнюю страницу.
Я боюсь, что конфигурация не работает на Ubuntu 16.04 и Apache 2.4.18.