您是否在WordPress网站上的FileETag指令自动添加。就NGINX而言,自2016年以来,ETag标头默认启用。
ETag标头
您可以使用以下代码在NGINX中手动启用ETag标头。
etag on
决定缓存长度的标头
接下来的两个标头是Cache-Control和Expires。这些标头有助于确定文件在从服务器获取新副本之前应在缓存中保留多长时间。请记住,要修复您在Pingdom或GTmetrix中看到的警告,您需要确保您有一个既可以验证缓存又可以确定缓存长度的标头。
3. 缓存控制
Cache-Control是由不同指令组成的标头,允许您定义缓存的长度。一些最常见的指令包括:
- max-age:定义文件应该被缓存的时间。
- public: 允许任何缓存公开存储响应。
- private:只能通过浏览器访问文件缓存。
缓存控制头
在上面的示例中,我们可以看到资产正在使用max-age指令。604800秒等于7天的缓存。要在Apache中进行配置,只需将以下代码添加到您的 .htaccess 文件中。
<filesMatch \".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$\"> Header set Cache-Control \"max-age=604800, public\" </filesMatch>
要在NGINX中配置它,只需将以下代码添加到您的配置文件中。所有NGINX配置文件都位于该/etc/nginx/
目录中。主要配置文件是/etc/nginx/nginx.conf
.
location ~* \\.(js|css|png|jpg|jpeg|gif|ico)$ { add_header Cache-Control \"public\"; }
要了解有关不同指令的更多信息,请查看这篇关于Cache-Control的深入文章 。
4. 过期
最后你有expires标头。根据这篇Google Developers文章,HTTP Caching : Cache-Control标头被定义为HTTP/1.1规范的一部分,并取代了以前用于定义响应缓存策略的标头(在本例中为Expires标头)。所有现代浏览器都支持Cache-Control,因此这就是您所需要的。但是,如果您同时拥有两者,则不会有任何伤害,但请记住,只会使用一个。Expires标头使用实际日期,而Cache-Control标头允许您指定到期前的时间量。
过期标题
要在Apache中添加Expires标头,只需将以下代码添加到您的 .htaccess文件中。
## 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 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 7 days\" </IfModule> ## EXPIRES HEADER CACHING ##
确保在诸如mod_rewrite、GZIP等内容下方添加Expires标头块。在文件底部是最安全的。
在.htaccess中添加过期标头
要在NGINX中添加Expires标头,只需将以下代码添加到您的配置文件中。
location ~* \\.(js|css|png|jpg|jpeg|gif|ico)$ { expires 7d; }
在NGINX上的很多情况下,Cache-Control标头和Expires标头只是一起使用,即使这在技术上不是必需的:
location ~* \\.(js|css|png|jpg|jpeg|gif|ico)$ { expires 7d; add_header Cache-Control \"public\"; }
大多数3rd方CDN提供商,例如KeyCDN和Cloudflare,也会在交付您的资产时自动添加这些标头。如果您看到警告,则可能是您的主机运行的软件过时或服务器配置错误。我们通常在共享主机上看到这种情况。或者,您可能正在设置自己的服务器,在这种情况下,可能尚未添加上述某些标头。
如果一切顺利,并且您没有任何未正确使用标头的3rd方请求,您应该会使用Pingdom等网站速度测试工具(如下所示)看到您的分数有所提高。
修复了指定缓存验证器警告