美文网首页
项目中遇到的浏览器缓存问题记录

项目中遇到的浏览器缓存问题记录

作者: 鹤空 | 来源:发表于2020-05-31 00:14 被阅读0次

问题描述:

本次迭代功能中,对登录后的第一个页面有调整,地址为/training-teacher/course/list
上线后,发现登录进来访问到依旧是原来的页面样式。
诡异的是,强制刷新页面后访问到新的页面,但是退出再次登录后,看到的还是老页面

原页面


老页面

期望新页面


新页面

目标

  • 用户无需手动刷新页面即可看到新功能
  • 查找出再次登录看到还是老页面的原因

分析

浏览器缓存问题
通常浏览器缓存规则分为两种,强制缓存和协商缓存。关于浏览器缓存的讲解可以看这里
需要在web服务器上对html页面进行缓存设置,强制浏览器走协商缓存。
nginx 配置问题
项目中原来已配置过html页面缓存策略, 但在当前页面没有生效。

    location / {
        if ($request_filename ~ .*\.(htm|html)$)
        {
            add_header Cache-Control no-cache;
        }
        if ($request_filename ~ .*\.(css|js|png|jpg|jpeg|svg)$)
        {
            add_header Cache-Control max-age=2592000;
        }
        try_files $uri $uri/ /index.html;
    }

因为项目采用多页和单页配合使用(mpa),所以在nginx配置上不能只在location /设置缓存策略。

url 单页跳转问题
已经强制刷新,获取到最新页面,但重新登录后看到的还是老页面。
这是因为,登录跳转的url路径为 /training-teacher 后面的路径不全是通过单页默认路由实现的。
在强制刷新时,页面路径为/training-teacher/course/list, 所以缓存中的/training-teacher没有被更新,导致以上问题。

解决方案

在nginx配置中对其它目录也设置同样的缓存策略

    location ^~ /training-teacher {
        if ($request_filename ~ .*\.(htm|html)$)
        {
            add_header Cache-Control no-cache;
        }
        if ($request_filename ~ .*\.(css|js|png|jpg|jpeg|svg)$)
        {
            add_header Cache-Control max-age=2592000;
        }
        try_files $uri $uri/ /training-teacher/index.html;
    }

问题解决。

相关文章

  • 静态文件缓存问题

    问题描述 在日常的项目中,在浏览器加载静态文件,会遇到浏览器缓存的问题。 浏览器会默认使用缓存,当我们修改了静态文...

  • 项目中遇到的浏览器缓存问题记录

    问题描述: 本次迭代功能中,对登录后的第一个页面有调整,地址为/training-teacher/course/l...

  • 一文搞懂浏览器缓存机制(转)

    最近在项目中遇到了 IE浏览器因缓存问题未能成功向后端发送 GET类型请求 的bug,然后顺藤摸瓜顺便看了看缓存的...

  • 项目中遇到的缓存问题

    1.缓存问题 问题描述:当使用表格里面是否可用对数据进行更新之后,缓存里面的数据丢失部分 ,原因是因为@Cache...

  • 浏览器缓存?优点?清除方法?

    ☆前端优化:浏览器缓存技术介绍 - 简书 浏览器缓存(适用于前端解决缓存问题) - 简书 js清除浏览器缓存问题的...

  • bug解决方案 & 小笔记

    该博客用于记录平时工作中遇到的一些小问题、小技巧以及一些最佳实践,不定期更新。 简单说说浏览器缓存 浏览器通过 H...

  • cas客户端无法退出问题解决

    记录grails3项目中使用spring security cas插件遇到的单点登出问题。依据文档进行cas相关配...

  • 缓存穿透与缓存雪崩

    1. 概述 缓存穿透和缓存雪崩是在实际项目中,经常能遇到的问题。 今天我们就简单聊聊缓存穿透和缓存雪崩的这两个话题...

  • 清除浏览器缓存

    在开发的过程中,往往会遇到浏览器的缓存问题.就是清除浏览器的缓存才能看到最新的内容 解决方案 方法一: 在htm...

  • WKWebview 注入header

    最近在项目中遇到与H5交互,当时方案是在请求头中加入header,但是后面遇到了比如浏览器缓存header不更新,...

网友评论

      本文标题:项目中遇到的浏览器缓存问题记录

      本文链接:https://www.haomeiwen.com/subject/qadkzhtx.html