原因:

nginx作为静态资源服务器,重新构建后发生浏览器页面直接取缓存中的js等文件名,但是由于服务器中文件已经被替换导致出现异常。

浏览器在下次请求这个资源的时候不会将请求发向后端,而是直接从缓存中获取资源。

出现这种情况的原因是缓存机制导致的。

强缓存与协商缓存的区别

  强缓存:浏览器不与服务端协商直接取浏览器缓存

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

协商缓存运作原理

  现在有一个这样的业务情景:后端的静态资源会不定时地发生更新,而因为浏览器默认使用强缓存,会默认从浏览器缓存中取到过时的资源。

  现在我们希望浏览器每次获取资源的时候都向后端确认资源是否更新,就要设置浏览器使用协商缓存

  那么后端如何判断资源是否更新了呢?这时就要用到Etag和Last-Modified两项响应头。

  每次收到一个静态资源的请求时,后端都将资源的最后修改时间(Last-Modified)、根据资源内容计算出来的Etag放在响应头给前端。

  前端收到响应后将这两项缓存起来,然后在下次请求同样资源的时候,将这两项的内容放到If-Modified-Since和If-None-Match这两项请求头中。

  服务端收到这两项后,会与资源当前生成的Etag和Last-Modified做比较,如果两者都一致,说明资源没有更新,服务端会返回304空响应;否则,说明资源有更新,服务端会将完整的资源内容返回


解决办法:

利用nginx设置浏览器协商缓存

使用nginx作为静态资源的服务器,再在响应头加上Cache-Control:no-cache就可以了。

在nginx的配置中添加如下,问题解决:

add_header Cache-Control no-cache;

location / {add_header Cache-Control no-cache;alias /usr/local/nginx/test;
}

nginx配置静态资源,重新发布后,浏览器缓存导致异常原因和解决相关推荐

  1. nginx配置静态资源访问

    目录 在配置静态资源访问之前先了解一些nginx的常用命令 接下来开始配置访问静态资源 先创建一个想要访问的资源文件夹,加入自己想要访问的文件内容,如(jpg.TXT.HTML等) 记一下路径 然后进 ...

  2. nginx配置静态资源为https

    最近遇到一个问题,https页面不能加载http静态资源,需要将http链接的静态资转为https链接的静态资源,在网上看了很多文档才配置出来,把nginx配置文件分享给大家,希望给用到的人做参考:n ...

  3. nginx 配置静态资源缓存。解决web静态资源访问过慢

    Nginx文件结构 1.全局块:配置影响nginx全局的指令.一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等. ...

  4. Nginx配置静态资源

    静态服务器 静态服务器概念非常简单:当用户请求静态资源时,把文件内容回复给用户. 但是,要把静态服务做到极致,需要考虑的方面非常多: 正确书写header:设置content-type.过期时间等 效 ...

  5. Nginx 配置静态资源服务器

    目录 一.打开config/nginx.config 二.添加一个资源文件夹存放静态资源 三.配置文件 ​四.测试访问 一.打开config/nginx.config 二.添加一个资源文件夹存放静态资 ...

  6. nginx配置静态资源html,详解nginx静态资源服务器简单配置

    传统的web项目,一般都将静态资源存放在 webroot的目录下,这样做很方便获取静态资源,但是如果说web项目很大,用户很多,静态资源也很多时,服务器的性能 或许就会很低下了.这种情况下一般都会需要 ...

  7. nginx配置静态资源html,通过nginx服务器访问静态资源(示例代码)

    通过nginx服务器访问静态资源 引言 之前在做毕设的时候接触过nginx,那时候是用来做前后端分离的.一转眼都快一年了,nginx的相关内容也忘的差不多了. 有过接触前端的同学都知道,直接在标签的s ...

  8. Nginx 配置静态资源防盗链

    当本网站的静态资源链接被其他网站给引用,如此可以被盗用静态资源显示. 如本网站资源是www.img.example.com/img.png 在某个其他网站引用了此链接,就直接发生的盗用. <im ...

  9. 静态资源使用时间戳控制浏览器缓存

    前言: 我们访问一些网站的是时候,经常看到静态资源后面都有一个时间戳或日期之类的,其实是为了控制缓存,如图左: Http响应码304 这里我们先谈下http响应码304,首先304状态码表示浏览器数据 ...

最新文章

  1. Make!Sense 动手好伴侣,带你轻松做实验
  2. 手写一个合格的前端脚手架
  3. Java中的关键字this_super
  4. Enterprise Library Logging App Block的时区问题
  5. 利用Kubernetes名称空间来管理内存和CPU资源(一)
  6. 组合体计算机绘图的实验原理,机械制图及计算机绘图
  7. python读取文件并另存为_Python实现读取并保存文件的类
  8. Spring源码下载及构建技巧
  9. Mcafee官方卸载工具
  10. 单片机消抖c语言程序,单片机中按键消抖程序
  11. 《C++ Primer 第5版》源码下载地址
  12. MongoDB分片存储集群支撑海量数据
  13. 百思不得其姐关注模块的推荐关注中 右侧TableView刷新细节
  14. Docker安装Tomcat镜像并部署web项目简述
  15. session的概念
  16. 8421码,5421码,2421码,余三码的区别
  17. Dubbo源码解析(九)Dubbo系列 源码总结+最近感悟
  18. unity ShaderLab 基础之【像素混合Blend】Blend命令详解 shaderLab blend blendOp透明度颜色混合
  19. 算法练习14:leetcode习题871. Minimum Number of Refueling Stops
  20. 武汉大学计算机学院李俊,GML空间数据存储技术研究.pdf

热门文章

  1. Redis 的 Sentinel 系统
  2. 若依使用的框架和技术
  3. 不管你学的是什么专业,你都应该多少懂些管理学的东西-----【管理学十大经典定理}...
  4. java 锁 面试题_Java面试题-Java中的锁
  5. 分享美食菜谱,可以收藏哦
  6. 2022工作中遇到的问题四
  7. Pandas数据分析 - 去重 - duplicated() drop_duplicates() 用法
  8. JavaWeb-实现多ip、异地 同时登录踢人下线
  9. 创业投资——IDG技术创业投资基金
  10. fiddler抓包 破解微信投票