为何我的 Apache 缓存无法正常工作?

为何我的 Apache 缓存无法正常工作?

我的服务器的操作系统:

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。

相关内容