基于nginx设置浏览器协商缓存过程详解

基于nginx设置浏览器协商缓存过程详解,第1张

基于nginx设置浏览器协商缓存过程详解

本文详细介绍了根据nginx设置计算机浏览器协商缓存的全过程。原文根据示例代码非常详细,对大家的学习培训或者工作都有一定的参考价值,朋友们一定要参考。

本文详细介绍了根据nginx设置计算机浏览器协商缓存的全过程。原文根据示例代码非常详细,对大家的学习培训或者工作都有一定的参考价值,朋友们一定要参考。

强缓存和协商缓存之间的差异

强缓存:计算机浏览器会立即获取计算机浏览器的缓存,而无需与服务器协商。

协商缓存:计算机浏览器将在决定是否从缓存中获取资源或再次获取资源之前,确定来自网络服务器的资源的有效性。

协商缓存 *** 作的基本原理

现在有这样一个业务流程场景:后台静态数据资源会不定期升级,由于电脑浏览器默认为强缓存,会默认从电脑浏览器缓存中获取过时的资源。

现在大家都期望电脑浏览器每次获取资源都会发展到后端来决定资源是否升级,所以需要设置电脑浏览器的应用协商缓存。

那么后端开发怎么知道资源有没有升级呢?此时,需要两个响应头,Etag和Last-Modified。

每次收到对静态数据资源的请求时,后端开发都会将资源的最后修改时间和根据资源内容计算的Etag放在前端开发的响应头中。

接收到响应后,前端开发人员缓存这两项,然后在下次请求相同的资源时,将这两项的内容放入If-Modified-Since和If-None-Match请求头中。

收到这两项后,服务器会将它们与Etag和Last-Modified进行比较,由resourcestoday形成。如果两者一致,说明资源没有升级,服务器会返回304空响应;否则,表示资源已经升级,服务器会将详细的资源内容返回给。

完成

那么如何完成这么复杂的整个过程呢?其实也不是很难。如果nginx用作静态数据资源的网络服务器,则在响应头中添加Cache-Control:no-cache。

下面我们来完成这个过程。

1.应用nginx作为静态数据资源的网络服务器。

在nginx的配置中,对静态数据资源的请求被投射到资源的硬盘路径上。

http{ server{ listen80; ... location/picture/{ aliasD:/luozixi/tcp_test/picture/; #alias是重界定途径 #例如浏览127.0.0.1/picture/1_new.gif,则会投射为浏览D:/luozixi/tcp_test/picture/1_new.gif #web应用压根不容易接到请求,picture的请求都被nginx解决了 #alias是更换,root是拼凑 autoindexon; #浏览127.0.0.1/picture/,会获得文件目录的数据库索引页面 } } }

2.重新装载nginx设备

nginx-sreload

3.此时,当请求静态数据资源时,nginx会自动将Etag和Last-Modified添加到响应头中。

4.但此时发现,如果没有配备cache-control:no-cache,电脑浏览器在下次请求这个资源的时候,就不容易把请求发送给后端开发,而只是立即从缓存中获取资源。

5.配备在nginx中

location/picture/{ add_headerCache-Controlno-cache; aliasD:/luozixi/tcp_test/picture/; }

6.当你在计算机浏览器缓存消除后第一次发出请求时,你会得到一个200的响应,一切都按顺序进行,响应头已经有Cache-Control:no-cache,表示应用了应用协商缓存。

7.再次发出请求后,您会发现请求头已经带有If-Modified-Since和If-None-Match项。

8.服务器(nginx)收到这两项后,会将它们与今天资源形成的Etag和Last-Modified进行比较。如果两者一致,说明资源没有升级,服务器会返回304空响应;否则,表示资源已经升级,服务器会将详细的资源内容返回给。

另外,网络服务器认证If-Modified-Since的方法只是简单的字符串比较。即使最后修改的资源早于If-Modified-Since,服务器仍然认为资源已经升级。

9.在接收到304响应后,计算机浏览器将从计算机浏览器缓存中获取资源。所以价格是十个街区。

无缓存和无存储的区别

No-cache表示不缓存过期的资源,缓存确定后会合理的将资源解析到服务器虚拟机。

无商店真的不是缓存。

文章里的内容就这些了。期待对大家的学习和培训有所帮助,也期待大家的应用。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/774698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存