1 如何让浏览器缓存静态资源
在使用pagespeed.web.dev测试网站性能时,在测试的结果页面我们可以看到有一个采用高效的缓存策略提供静态资源。
在上图中所示的分析页面我们可以看到三个主要的信息:网址、缓存TTL、传输文件大小,其中缓存TTL就是表示静态资源在浏览器中缓存的时间。
为了浏览器主动缓存网站的静态资源,比如说图片文件、字体文件、js文件、css文件,避免每次都从服务器进行请求,需要在服务器端设置HTTP响应头,用来标志浏览器需要缓存某些静态资源。
以下是与缓存相关的标头:
- Cache-Control:用于控制资源的缓存机制。通过设置值为 public 或 private 来指定资源是否可以被缓存,并通过设置 max-age 指定资源应该被缓存的时间长度。
- Expires:允许指定一个过期时间,过期后,浏览器必须重新获取资源。
- ETag:允许服务器标识资源,并使用 If-None-Match 请求头进行缓存验证。
- Last-Modified:允许服务器指定资源最后修改的时间,并使用 If-Modified-Since 请求头进行缓存验证。
比如说:
Cache-Control: max-age=31536000
max-age 参数告诉浏览器它应该将资源缓存多长时间,单位为秒。以下示例将持续时间设置为 31536000,对应于 1 年:60 秒 × 60 分钟 × 24 小时 × 365 天= 31536000 秒。
通过在服务器中对对应文件设置相应的HTTP标头标志在浏览器中缓存静态资源。
2 WordPress网站的静态资源缓存
2.1 Nginx
如果你的服务器使用的Nginx进行代理,可以参考以下代码设置静态文件缓存
# 图片文件
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d;
error_log off;
access_log /dev/null;
}
# js,css文件
location ~ .*\.(js|css)?$
{
expires 12h;
error_log off;
access_log /dev/null;
}
# 字体文件
location ~ .*\.(eot|ttf|woff|woff2)?$
{
expires 180d;
error_log off;
access_log /dev/null;
}
2.2 Apache
如果你的服务器使用的Apache进行代理,可以参考以下代码设置静态文件缓存
## EXPIRES HEADER CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType image/svg "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/javascript "access 1 month"
ExpiresByType application/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
## EXPIRES HEADER CACHING ##
3 合理的设置静态资源缓存
如果你的静态资源经常更新,可以将其缓存设置为 no-cache,但浏览器仍会缓存该资源,不过首先会与服务器进行检查,以确保资源仍然是最新的。也可以减少其expire的时长,比如说几个小时,避免影响网站的其他功能。所以说并不是缓存期越长越好。而是需要根据实际需求进行权衡,以决定资源的最佳缓存期。
参考链接
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:WordPress – 网站性能优化,设置浏览器缓存静态资源
原文链接:https://www.stubbornhuang.com/2729/
发布于:2023年07月18日 10:48:20
修改于:2023年07月18日 10:48:20
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52