浏览器缓存控制——nginx的expires设置

本文介绍了如何利用nginx的expires设置实现浏览器端的长期缓存,以提高网站性能,特别是对于改动可能性小的图片资源。通过设置不同的时间单位,如epoch、max等,可以控制缓存的有效期。此外,还提到了304状态码作为另一种缓存手段,通过etag和last_modified_since判断文件是否更新,以决定是否使用本地缓存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx的缓存设置 提高网站性能

对于网站的图片,尤其是新闻站, 图片一旦发布, 改动的可能是非常小的.我们希望 能否在用户访问一次后, 图片缓存在用户的浏览器端,且时间比较长的缓存.
可以, 用到 nginx的expires设置 .
nginx中设置过期时间,非常简单,
在location或if段里,来写.

格式 expires [time|epoch|max|pff]

time:默认单位(s)

  expires 30s;//缓存30秒 s(second)代表秒
  expires 2h;//缓存2小时 h(hour)代表小时
  expires 30d;//缓存2小时 d(day)代表天
  expires 12m;//缓存12个月 m(month)代表月

epoch:指定“Expires”的值为 1 January, 1970, 00:00:01 GMT。
max:指定“Expires”的值为 31 December 2037 23:59:59 GMT,“Cache-Control”的值为10年。
-1:指定“Expires”的值为当前服务器时间-1s,即永远过期。(负数:Cache-Control: no-cache,正数或零:Cache-Control: max-age = #(# 为您指定时间的秒数))
off:不修改“Expires”和”Cache-Control”的值

(注意:服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效)
另: 304 也是一种很好的缓存手段
原理是: 服务器响应文件内容是,同时响应etag标签(内容的签名,内容一变,他也变), 和 last_modified_since 2个标签值
浏览器下次去请求时,头信息发送这两个标签, 服务器检测文件有没有发生变化,如无,直接头信息返回 etag,last_modified_since
浏览器知道内容无改变,于是直接调用本地缓存.
这个过程,也请求了服务器,但是传着的内容极少.
对于变化周期较短的,如静态html,js,css,比较适于用这个方式

例子location

server {
listen 80;  #监听端口
server_name localohst;  #监听域名

location /  {
root /var/www/a.com;  #根目录定位
index index.html;

}

location ~ .*\.(jpg|jpeg|gif|png|js|css)$ {
expires 1d;#只对图片、JS及CSS缓存1天
}

}

例子if

server {
listen 80;  #监听端口
server_name localohst;  #监听域名

location /  {
root /var/www/a.com;  #根目录定位
index index.html;

 if ($fastcgi_script_name ~* \.[jpg|jpeg|gif|png|js|css] ) {
 expires 1d;#只对图片、JS及CSS缓存1天
 }
}

}
### Nginx 缓存配置与优化 #### 配置缓存路径及相关参数 为了实现高效的缓存机制,`proxy_cache_path`指令用于定义缓存数据存储的位置及其属性。此命令允许指定缓存目录、分配给键空间区域的内存大小、不活跃条目的过期时间以及最大磁盘使用量等选项[^2]。 ```nginx proxy_cache_path /data/nginx/cache keys_zone=news_cache:10m inactive=1d max_size=10g; ``` 上述配置语句创建了一个名为`news_cache`的缓存区,在`/data/nginx/cache`下保存缓存对象,并设置了1天内无访问记录的对象会被自动清除,整个缓存占用不超过10GB硬盘空间。 #### 启用静态资源缓存及压缩功能 除了动态页面外,对于图片、样式表和其他类型的静态资产同样适用缓存策略来改善网站性能。当这些资源被频繁请求时,利用浏览器端或中间件(如Nginx)进行本地化存储能够减少网络往返次数,从而加快网页渲染速度。此外,开启Gzip算法可有效缩减HTML/CSS/JavaScript等内容体积,进而缩短下载耗时[^3]。 ```nginx location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 7d; add_header Cache-Control "public, no-transform"; } gzip on; gzip_types text/plain application/xml text/css application/javascript; ``` 以上片段展示了针对特定扩展名文件设定七日有效期的同时启用了HTTP头控制字段以增强兼容性和安全性;紧接着激活了对多种MIME类型实施压缩操作的功能开关。 #### 反向代理模式下的Web应用加速方案 作为一款高性能HTTP服务器软件,Nginx不仅支持正向代理也擅长扮演反向角色——即站在真实源站之前接受外部连接并将它们分发出去。在此过程中间层会临时保留住部分已获取的数据副本以便后续重复调用者快速取回而不必每次都重新发起完整的TCP/IP握手过程。这种做法既减轻了后端压力又提高了整体吞吐率[^5]。 ```nginx http { upstream backend_servers { server 192.168.1.100 weight=5; server 192.168.1.101 backup; } server { listen 80; server_name example.com; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_cache news_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; } } } ``` 这段脚本说明了怎样构建一个简单的负载均衡器并通过关联先前声明过的高速缓冲池实例达到最优的服务质量目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值