nginx配置浏览器缓存(强缓存、协商缓存、无缓存)

article/2025/5/6 19:56:06

🏆nginx下载安装及使用

💛nginx下载安装

下载地址:点击下载nginx
在这里插入图片描述
根据系统选择要下载的安装包,这里最好选择稳定版(stable version)。
下载好后解压该zip,将解压后的文件夹放在自己喜欢的目录下,我是放在J盘(自己分的磁盘)下。
在这里插入图片描述
进入J:\nginx-1.22.0目录,目录结构:
在这里插入图片描述
注:project目录是我自己创建的,用于存放打包之后的项目,本次我使用的hubuilderx创建的uniapp的H5项目,相关打包部署请参考:nginx部署uniapp的h5项目

💜nginx启动

进入J:\nginx-1.22.0目录,打开cmd输入以下命令启动nginx。

start nginx

命令运行时cmd窗口会闪一下,属于正常现象。也可以点击nginx.exe应用程序启动nginx。
nginx默认配置(J:\nginx-1.22.0\conf下的nginx.conf文件):
在这里插入图片描述
可以看到默认端口是80,默认ip是本地,打开浏览器输入 http://localhost:80/ 访问,出现以下页面代表nginx启动成功。
在这里插入图片描述
nginx其他常用命令:

// 查看帮助信息
nginx -h// 查看nginx版本(小写v)
nginx -v// 查看nginx版本及配置参数信息(大写V)
nginx -V// 指定配置文件启动nginx(xxx表示配置文件路径)
start nginx -c xxx// 测试配置文件是否正确(xxx表示配置文件路径)
nginx -t -c xxx// 完整有序的停止nginx,保存相关信息
nginx -s quit// 完整有序的停止nginx,保存相关信息
nginx -s stop// 重启nginx
nginx -s reload

可自行运行命令看看。

🥇nginx配置缓存

🤎强缓存、协商缓存、无缓存区别

强缓存:浏览器不与服务端协商直接取浏览器缓存
协商缓存:浏览器会先向服务器确认资源的有效性后才决定是从缓存中取资源还是重新获取资源
无缓存:浏览器直接向服务器重新获取资源

三种缓存机制皆通过配置http头(add_header)Cache-Control来实现。强缓存还可以使用Expires字段实现。
Cache-Control字段枚举值:

描述
no-store禁止缓存(强缓存和协商缓存),客户端不存储任何值
no-cache禁止强缓存,需要重写验证(可以理解为 禁止强缓存,启用协商缓存)
private私有缓存,禁止中间人(比如CDN等代理缓存)
public共享缓存,允许中间人缓存
max-age资源可以被缓存的最大时间,单位:秒,是一个相对时间,优先级高于 Expires
s-maxage用于共享缓存,单位:秒,如果在其有效期内,不去访问CDN等。s-maxage会覆盖 max-age 和 Expires
must-revalidate缓存使用陈旧资源时,必需先验证状态

💜强缓存配置

Expires:response header里的过期时间,浏览器再次加载资源时,如果在这个过期时间内,则命中强缓存(http1.0的产物,现在一般用cache-control)。

它是一个时间戳,当客户端再次请求该资源的时候,会把客户端时间与该时间戳进行对比,如果大于该时间戳则已过期,否则直接使用该缓存资源。
但是,有个大问题,发送请求时是使用的客户端时间去对比。一是客户端和服务端时间可能快慢不一致,另一方面是客户端的时间是可以自行修改的(比如浏览器是跟随系统时间的,修改系统时间会影响到),所以不一定满足预期。

Cache-Control:cache-control使用max-age控制强缓存时间。当值设为max-age=300时,则代表在这个请求正确返回时间(浏览器也会记录下来)的5分钟内再次加载资源,就会命中强缓存。

cache-control的优先级高于expires,expires是http1.0的产物,而cache-control是http1.1的产物,两者同时存在的时候expire会被cache-control的max-age覆盖,在不支持http1.1的情况下可能就需要expires来保持兼容。
修改nginx.conf文件:
在这里插入图片描述
重启nginx后,刷新项目页面,查看项目网络请求:
在这里插入图片描述
可以看到响应头带有max-age=300,代表设置成功,浏览器直接从内存和磁盘中取资源,五分钟后缓存失效。请谨慎使用强缓存。

🧡协商缓存配置

协商缓存主要依赖的响应头包括Last-ModifiedETag,需要和服务器交互,请求资源命中协商缓存后,返回的状态码为 304,所以304状态码不应该认为是一种错误,而是对客户端有缓存情况下服务端的一种响应。

Last-Modified:记录资源最后修改的时间。
ETag:基于资源的内容编码生成一串唯一的标识字符串, 只要内容不同, 就会生成不同的ETag。

Last-Modified有以下两个缺点:

🍗 只要编辑了,不管内容是否真的有改变,都会以这最后修改的时间作为判断依据,当成新资源返回,从而导致了没必要的请求相应,而这正是缓存本来的作用即避免没必要的请求。
🍖 时间的精确度只能到秒,如果在一秒内的修改是检测不到更新的,仍会告知浏览器使用旧的缓存。

ETag的出现就是为了解决last-modified的上述问题。
修改nginx.conf文件:
在这里插入图片描述

重启nginx后,刷新项目页面,查看项目网络请求:
在这里插入图片描述
此后每次刷新页面,都会与服务器确认资源是否更新,如果更新服务器则会返回新的资源,如果未更新则告诉浏览器启用缓存。

🤍无缓存配置

修改nginx.conf文件:
在这里插入图片描述

重启nginx后,刷新项目页面,查看项目网络请求:
在这里插入图片描述
每次刷新页面,请求状态码都是200,真正从服务器获取资源,绕开所有缓存,但会增加网络带宽消耗,影响项目性能,谨慎使用。


http://chatgpt.dhexx.cn/article/edK9Iatv.shtml

相关文章

nginx proxy_cache 缓存配置

前言: 由于本人工作原因,涉及到网络直播领域,其中视频的回放下载,涉及到了一些视频下载方面的技术。针对于一个完整视频的下载,目前市面上的主流做法是,先将整个视频流切片,存储到文件服务器中&…

Nginx缓存配置,以及nginx ngx_cache_purge模块的使用,ngx_slowfs_cache模块构建本地缓存

最近接触到Nginx缓存,网上查了下,这里记录一下,学习学习。 1 缓存 Web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL&#x…

Nginx高级(九):nginx缓存配置、nginx proxy_cache缓存模块指令详解

一、nginx缓存 1、什么是缓存? 1.缓存的基本概述 缓存的基本思想是利用客户端访问的时间局限性,将客户端访问过的内容做一个副本,在一定时间内存放到本地,当改数据下次被访问时,不必连接到后端服务器反复去查询数据…

Nginx缓存配置(简易实现CDN功能)

环境推荐使用openresty,自带了挺多模块的,如果直接使用nginx,需要对缺少的模块进行添加,添加教程参照百度或者OpenResty教程 1、本地站点ETag缓存 示范开启静态文件缓存 环境: nginx -v nginx version: openresty/1.15…

Nginx缓存配置教程

问题引出 假设某电商平台商品详情页需要实现 700 QPS(假设宽带是千兆宽带) 千M局域网宽带网卡速率按照1000进位,所以1Gbps1,000,000,000bps125,000,000Bps≈119.21MB/s 当达到500QPS 的时候很难继续压测上去。 假设每个页面主体渲染所需要的…

Nginx缓存配置

Nginx缓存配置 一、Nginx缓存介绍二、具体操作三、实例1 一、Nginx缓存介绍 Nginx 不仅仅是一个 Web 服务器,它还可以作为一个缓存服务器使用。通过 Nginx 缓存,可以对一些静态资源或者数据更新频率较低的后端服务做缓存,降低静态资源或后端…

nginx 缓存配置详解都是干货

一、缓存类型 1、服务端缓存 2、代理缓存 3、客户端缓存 4、代理缓存的工作流程: 二、代理缓存配置语法 1、代理缓存路径 配置语法 Syntax: proxy_cache_path path [levelslevels] [use_temp_pathon|off] keys_zonename:size [inactivetime] [max_sizesize] […

微信那些词语发不出去

在写文章的时候,会遇到以下3种情况: 1、你所编辑的图文消息可能含有敏感内容,你可以继续保存或发布该图文消息(发布等待时长约3-4小时),若保存或发布后,经核实含有敏感内容的,将可能…

微信公众号文章存在敏感词被屏蔽

在写文章的时候,会遇到以下3种情况: 1、你所编辑的图文消息可能含有敏感内容,你可以继续保存或发布该图文消息(发布等待时长约3-4小时),若保存或发布后,经核实含有敏感内容的,将可能…

微信公众平台有哪些敏感词不准发

在写文章的时候,会遇到以下3种情况: 1、你所编辑的图文消息可能含有敏感内容,你可以继续保存或发布该图文消息(发布等待时长约3-4小时),若保存或发布后,经核实含有敏感内容的,将可能…

微信公众号敏感词检测工具

在写文章的时候,会遇到以下3种情况: 1、你所编辑的图文消息可能含有敏感内容,你可以继续保存或发布该图文消息(发布等待时长约3-4小时),若保存或发布后,经核实含有敏感内容的,将可能…

微信公众号文章是否违规怎么检测?

在写文章的时候,会遇到以下3种情况: 1、你所编辑的图文消息可能含有敏感内容,你可以继续保存或发布该图文消息(发布等待时长约3-4小时),若保存或发布后,经核实含有敏感内容的,将可能…

微信小程序发布需要校验敏感信息(内容、图片)-Java后端实现

精选30云产品&#xff0c;助力企业轻松上云&#xff01;>>> 前端只需要将图片和内容传过来即可 pom依赖 HttpClient的依赖和json转换的依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><versio…

SpringBoot调用微信小程序敏感词拦截接口

SpringBoot调用微信小程序敏感词拦截接口 获取接口调用凭据 | 微信开放文档 (qq.com) 在调用微信小程序安全识别接口时需要先拿到&#xff0c;小程序的token令牌&#xff0c;需要调用下面这个接口 https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&am…

微信小程序通过云函数调用安全api,实现敏感词校验

如题&#xff0c;话不多说&#xff0c;直接上代码 1.首先需要在小程序中引入云函数框架 1.1在project.config.json中添加设置&#xff0c;同时在小程序根目录新建cloudfunctions文件夹 "cloudfunctionRoot": "cloudfunctions/" 1.2在app.json中添加设置…

php屏蔽词库,PHP调用微信过滤敏感词汇API

之前写过一篇过滤敏感词汇的文章,但是最近临近国庆,小程序提高了安全能力得检测,审核变得更加严格,要求自定义昵称、头像、签名等必须要有过滤敏感词汇得机制,严格上之前那边文章也可以过滤,但是具体微信过滤得内容就不得而知了,所以,今天就分享一下PHP利用微信小程序的…

微信小程序敏感词过滤

当你的小程序有用户提交&#xff08;评论、文章、图片&#xff09;时&#xff0c;如果你的代码没有过滤敏感词汇&#xff0c;将会审核不通过&#xff0c;幸好官方提供了API&#xff0c;方便了很多&#xff0c;废话不多说&#xff0c;干&#xff01; 本文只有文字过滤 本文采用…

企业微信又更新了!聊天敏感词、下载直播回放视频、聊天文件支持10GB...

企业微信版本已更新至3.0.36&#xff0c;还没有更新的速速去升级啦&#xff01; 一、客户联系功能增强 企业可设置聊天敏感词&#xff0c;设置后将下载到成员的企业微信。当成员发送给客户的消息包含敏感词时&#xff0c;将予以提示或发送失败。 登录企业微信管理后台在客户联…

Java实现微信小程序文本内容敏感词检查

1.背景2.策略3.实现1. 调用auth.getAccessToken&#xff0c;获取接口调用凭证2. 调用security.msgSecCheck检测文本内容 4.遇到的问题5.工具类完整代码6.使用方式 1.背景 发布小程序的时候&#xff0c;没有通过审核&#xff0c;审核结果为 提示要完善内容审核机制。 2.策略 …

普通微信如何设置敏感词监控?以及企业微信敏感词监控拦截

微信作为一个广泛使用的社交平台&#xff0c;拥有庞大的用户群体&#xff0c;这使得微信营销在企业的市场推广中扮演着重要的角色。通过微信营销&#xff0c;企业可以获得一定程度的业绩增长。然而&#xff0c;随着企业规模的扩大&#xff0c;微信营销也面临着一些挑战和盲区。…