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

2020-05-31  本文已影响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;
    }

问题解决。

上一篇下一篇

猜你喜欢

热点阅读