Nginx实战:浏览器缓存

浏览器缓存

浏览器缓存是为了加速浏览,浏览器在用户磁盘上,对最近请求过

的文档进行存储。当访问者再次请求这个页面时,浏览器就可以从

本地磁盘显示文档,这样,就可以加速页面的阅览,缓存的方式节

约了网络的资源,提高了网络的效率。
实现浏览器缓存步骤

浏览器缓存可以通过expires指令输出Header头来实现。

bash 复制代码
语法:expires[time| epoch | max |off]
默认值:expires off
作用域:http、server、location

一个HTML页面,会引用一些JavaScript文件、图片文件、而这些格

式的文件很少会被修改,则可以通过expires设置浏览器缓存。
示例

比如,对常见格式的图片、Flash文件在浏览器本地缓存30天,对

JS、CSS文件在浏览器本地缓存1小时,代码如下

bash 复制代码
location ~ .*\.(gif|jpg|png)$
{
   expires 30d;
}
location ~.*\.(js|css)?$
{
   expires 1h;
}

Cache-Control

设置相对过期时间, max-age指明以秒为单位的缓存时间. 若对静态

资源只缓存一次, 可以设置max-age的值为315360000000 (一万年).

比如对于提交的订单,为了防止浏览器回退重新提交,可以使用

Cache-Control之no-store绝对禁止缓存,即便浏览器回退依然请求

的是服务器,进而判断订单的状态给出相应的提示信息!

bash 复制代码
Http协议的cache-control的常见取值及其组合释义:
no-cache: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age, 则缓存期间不访
问服务器
no-store: 不仅不能缓存, 连暂存也不可以(即: 临时文件夹中不能暂存该资源)
语法:expires[time| epoch | max |off]
默认值:expires off
作用域:http、server、location

location ~ .*\.(gif|jpg|png)$
{
   expires 30d;
}
location ~.*\.(js|css)?$
{
   expires 1h;
}

private(默认): 只能在浏览器中缓存, 只有在第一次请求的时候才访问服务器, 若有- - maxage, 则缓存期间不访问服务器
public: 可以被任何缓存区缓存, 如: 浏览器、服务器、代理服务器等
max-age: 相对过期时间, 即以秒为单位的缓存时间

add_header Cache-Control no-cache;

add_header Cache-Control private;

企业实战示例

下面是开发部门同事发过来的配置需求:

1 禁用html文件缓存,即cache control设置为no-cache;

2 对于js,图片,css,字体等,设置max-age=2592000. 也就是30天;

注意:

缓存控制字段cache-control的配置(add_header)要放在http,

server, location区域, 或是放在location的if判断里, 例

如"add_header Cache-Control no-cache;

bash 复制代码
server{
 listen 80;
 server_name 192.168.66.100;
 location ~ \.                
(css|js|gif|jpg|jpeg|png|bmp|swf|ttf|woff|ot
f|ttc|pfa)$ {
     root /data/web/kevin;
     expires 30d;
   }
   location ~ \.(html|htm)$ {
     root /data/web/kevin;
     add_header Cache-Control no-cache;
   }
相关推荐
SelectDB3 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220702 天前
如何搭建本地yum源(上)
运维
ping某3 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工5 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智5 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_5 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化