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

这篇具有很好参考价值的文章主要介绍了nginx配置浏览器缓存(强缓存、协商缓存、无缓存)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🏆nginx下载安装及使用

💛nginx下载安装

下载地址:点击下载nginx
nginx缓存,nginx,缓存,前端
根据系统选择要下载的安装包,这里最好选择稳定版(stable version)。
下载好后解压该zip,将解压后的文件夹放在自己喜欢的目录下,我是放在J盘(自己分的磁盘)下。
nginx缓存,nginx,缓存,前端
进入J:\nginx-1.22.0目录,目录结构:
nginx缓存,nginx,缓存,前端
注: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文件):
nginx缓存,nginx,缓存,前端
可以看到默认端口是80,默认ip是本地,打开浏览器输入 http://localhost:80/ 访问,出现以下页面代表nginx启动成功。
nginx缓存,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缓存,nginx,缓存,前端
重启nginx后,刷新项目页面,查看项目网络请求:
nginx缓存,nginx,缓存,前端
可以看到响应头带有max-age=300,代表设置成功,浏览器直接从内存和磁盘中取资源,五分钟后缓存失效。请谨慎使用强缓存。

🧡协商缓存配置

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

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

Last-Modified有以下两个缺点:

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

ETag的出现就是为了解决last-modified的上述问题。
修改nginx.conf文件:
nginx缓存,nginx,缓存,前端

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

🤍无缓存配置

修改nginx.conf文件:
nginx缓存,nginx,缓存,前端

重启nginx后,刷新项目页面,查看项目网络请求:
nginx缓存,nginx,缓存,前端
每次刷新页面,请求状态码都是200,真正从服务器获取资源,绕开所有缓存,但会增加网络带宽消耗,影响项目性能,谨慎使用。文章来源地址https://www.toymoban.com/news/detail-709114.html

到了这里,关于nginx配置浏览器缓存(强缓存、协商缓存、无缓存)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx 配置浏览器不缓存文件 每次都会从服务器 请求新的文件

    适用于实时更新数据的,网页 可以让用户每次都是重新请求,新的index.html 防止过期文件,影响用户体验 有时候更新了js 文件 ,但是用户的浏览器则不会立即更新js文件的缓存 从而造成用户体验不佳 优点,每次都能打开最新的页面 缺点 ,会增加服务器负荷 要在 Nginx 中禁用

    2024年04月08日
    浏览(39)
  • 细说前端打包发布后,浏览器缓存如何清理?其实只需要简单的webpack配置就行

    有没有这么一种场景,项目上线后,客户使用过程中发现了bug,你急急忙忙改完,发布。但你发布后 测试人员或者客户会说:“你这改了没用啊”。 你:“清下缓存试试” 客户:“????” 那么这篇文章带你认识浏览器缓存,及清除浏览器的缓存办法。让你不再为了缓存

    2024年02月09日
    浏览(44)
  • 前端---需要了解浏览器相关知识--浏览器请求服务器资源---缓存

    掘金1:浏览器缓存 掘金2 :浏览器缓存 跟别人怎么讲,从大的说:缓存的原理是什么? 再说什么是浏览器缓存? 浏览器缓存 请求(静态资源 | 动态资源) 一、缓存是什么? 二、为什么? 浏览器是如何判断是否使用缓存的??第一次请求网页 第二次请求相同网页: 三、怎

    2024年02月12日
    浏览(40)
  • 浏览器缓存引发的odoo前端报错

    前两天,跑了一个odoo16项目,莫名其妙的前端报错, moment.js 报的错, 这是一个时间库,不是我自己写的代码,我也没做过任何修改,搞不清楚为什么报错。以为是odoo的bug,所以从gitee下载了odoo16最新的代码,测试了一下还是报错。 后来换成了一个非常老的odoo16版本,这回不

    2024年02月02日
    浏览(39)
  • 【前端】Vue 部署上线清除浏览器缓存的方式

    修改根目录index.html 在 head 里面添加下面代码 1 2 meta http-equiv = \\\"pragram\\\" content = \\\"no-cache\\\" meta http-equiv = \\\"cache-control\\\" content = \\\"no-cache, no-store, must-revalidate\\\"   配置 nginx 不缓存 html vue默认配置,打包后css和js的名字后面都加了哈希值,不会有缓存问题。但是index.html在服务器端可能是有

    2024年02月09日
    浏览(28)
  • 前端浏览器缓存知识梳理,前端工程师面试题目和答案

    所谓浏览器缓存其实就是指在本地使用的计算机中开辟一个内存区,同时也开辟一个硬盘区作为数据传输的缓冲区,然后用这个缓冲区来暂时保存用户以前访问过的信息。 浏览器缓存过程:  强缓存,协商缓存。 浏览器缓存位置一般分为四类:  Service Worker–Memory Cache–Di

    2024年04月15日
    浏览(39)
  • 前端浏览器缓存的好处和弊端以及如何处理弊端

    好处: 减少冗余的数据传输,节省带宽。 减轻服务器的请求压力,因为有缓存可以减少向服务器发送请求, 资源从缓存中读取,加快客户端的访问速度。因为无需从服务器请求等待响应 缺点: 系统更新时,如何删除浏览器的缓存资源,加载最新的页面。 Service Worker:是一

    2024年02月12日
    浏览(39)
  • 【Nginx12】Nginx学习:HTTP核心模块(九)浏览器缓存与try_files

    浏览器缓存在 Nginx 的 HTTP 核心模块中其实只有两个简单的配置,这一块也是 HTTP 的基础知识。之前我们就一直在强调,学习 Nginx 需要的就是各种网络相关的基础知识,其中更重要的就是 HTTP 和 TCP 相关的内容。另外一个 try_files 配置指令也是 Nginx 中非常常用的一个指令,用于

    2024年02月15日
    浏览(30)
  • nginx部署前端项目后刷新浏览器报错404

    问题: Vue项目打包部署Nginx服务器后,刷新页面后出现404的问题。 原因: 加载单页应用后路由改变均由浏览器处理,而刷新时将会请求当前的链接,而Nginx无法找到对应的页面。 解决:在Nginx配置文件nginx.conf中加入如下配置:  try_files $uri $uri/ /index.html; # 变量解释 try_fil

    2024年02月12日
    浏览(33)
  • 如何清理电脑浏览器缓存,4款常用浏览器清理缓存的方法

    浏览器是人们在网络生活中不可缺少的存在,我们使用各种浏览器上网的时候,可能会出现各种程序出错的问题。或者,可能使用浏览器的时间就了,发现电脑有点卡顿,这时候就需要情况缓存了。那么,如何清理电脑浏览器的缓存呢?下面分享4款常用浏览器清理缓存的方法

    2024年02月04日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包