Apache如何设置缓存
通过正确配置 Apache 的 mod_expires 模块,我们可以控制我们在访问者浏览器中的缓存设置。
我们可以通过为配置 Cache-Control HTTP 标头来控制此缓存。
这可以通过在服务器的 .htaccess 文件中添加 mod_expires 来完成。
如果在没有 Cache-Control 的情况下访问,该将向服务器请求加载每个图像、CSS 文件、Javascript 文件或者其他内容。
将所需的规则添加到根目录中的 .htaccess 文件中。
如果没有 .htaccess 文件,请创建一个。
该文件必须包含以下行:
ExpiresActive on
然后,添加必要的规则。
我们需要 ExpiresDefault 和 ExpiresByType 指令。
遵循以下语法:
ExpiresDefault "base[plus num type] [num type] ..." ExpiresByType type/encoding "base[plus num type] [num type] ..."
这就是我们如何使用 Apache Expires 模块。
如果要为所有文件设置缓存,可以使用 ExpiresDefault,但如果要按类型设置,请使用 ExpiresByType。
其中 base 是以下之一:
- access
- now (相当于 'access')
- modification
加号是可选的。
Num 必须是 atoi() 可接受的整数值。
类型可以是以下之一:
- years
- months
- weeks
- days
- hours
- minutes
- seconds
ExpiresByType 指令指定 Expires 标头的值和为指定类型的文档生成的 Cache-Control 标头的 max-age 指令。
ExpiresDefault 指令指定默认算法来计算受影响领域中所有文档的到期时间。
ExpiresByType 指令仅在指定 ExpiresActive On 时有效。
仅对于指定的 MIME 类型,它会覆盖由 ExpiresDefault 设置的任何到期日期。
如我们所见,下面我们为缓存设置文件类型和时间:
ExpiresActive on # ExpiresByType text/html "access plus 600 seconds" ExpiresByType text/css "access plus 30 days" ExpiresByType text/javascript "access plus 30 days" ExpiresByType application/javascript "access plus 30 days" ExpiresByType application/x-javascript "access plus 30 days" ExpiresByType image/gif "access plus 7 days" ExpiresByType image/jpg "access plus 7 days" ExpiresByType image/jpeg "access plus 7 days" ExpiresByType image/png "access plus 7 days" ExpiresByType application/x-shockwave-flash "access plus 7 days" # Add a far future Expires header for fonts ExpiresByType application/vnd.ms-fontobject "access plus 1 year" ExpiresByType application/x-font-ttf "access plus 1 year" ExpiresByType application/x-font-opentype "access plus 1 year" ExpiresByType application/x-font-woff "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year"
我们可以使用 FilesMatch 指令缓存文件。
这是一个简单的例子:
<FilesMatch "\.(gif|jpe?g|png)$"> Header set Cache-Control "public" </FilesMatch> <FilesMatch "\.(html)$"> Header set Cache-Control "public" </FilesMatch> <FilesMatch "\.(php)$"> Header set Cache-Control "private" </FilesMatch>