我的服务器的操作系统:
Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial
Apahce version:Apache/2.4.18 (Ubuntu)
很抱歉我的英语不好,我会尽力描述清楚。
我已经将缓存指令添加到我的配置文件中,并启用了以下模块:cache、cache_disk、expire、headers。
如果缓存是最新的(我的文件中的过期时间为 10 秒),chrome 会从本地缓存中获取代码为 200 的响应。但是当缓存过时时,apache 服务器在向客户端提供过时的内容之前不会检查内容是否仍然最新。
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>
答案1
您的配置看起来与 Digital Ocean 配置完全相同 https://www.digitalocean.com/community/tutorials/how-to-configure-apache-content-caching-on-ubuntu-14-04
您可以添加%{cache-status}e
到行中以记录Apache 的LogFormat
缓存状态。access.log
我使用与上面相同的配置,但就我而言,缓存始终提供相同的内容,无论我在主页上单击什么。
我担心配置不起作用适用于 Ubuntu 16.04 和 Apache 2.4.18。