• web网站css,js更新后客户浏览器缓存问题,需要刷新才能正常展示的解决办法


    问题描述

    最近将公司官网样式进行了调整,部署到服务器后访问发现页面展示不正常,但是刷新之后就会展示正常。

    问题分析

    研究之后发现可能的原因有

    1. css文件过大,加载缓慢
    2. 本地缓存问题,虽然服务器修改了css文件,但是浏览器仍然使用本地缓存的css,

    需要用户多刷新一次才能正常展示显然是很不合理的,那么怎么样解决更新后让浏览器请求新的css或js文件呢?

    解决办法

    方法1 更新文件后更改css/js文件名。

    其实解决这个问题很简单,缓存是通过文件名标记缓存的内容的。在你更新了网站的css文件内容后,在更换一下css的文件名就可以了。如原先html中的css调用语句如下:

    <link rel="stylesheet" href="style.css" type="text/css"  media="screen"/>
    • 1

    改一下css文件名:

    <link rel="stylesheet" href="styleV2.css" type="text/css" media="screen"/>
    • 1

    方法2 给css/js文件加个版本号

    每次修改css文件后还要修改css的文件名有点麻烦,那么我们可以在加载css语句中加入个版本号(即css链接中?后面的内容)就可以了。如原先html中的css调用语句如下:

    <link rel="stylesheet" href="style.css?v=2015" type="text/css"  media="screen"/>
    • 1

    将css文件的版本号改成新的:

    <link rel="stylesheet" href="style.css?v=2016" type="text/css"  media="screen"/>
    • 1

    关于css/js文件后缀参数:

    css文件后面的问号起不到实际作用,仅能当作后缀,如果用问号加参数的方法,可以添加版本号等信息,更新的同时可以刷新一下浏览器端的缓存。一个小小的细节,可以给我们带来很大的方便。 
    比如:

    <script type="text/javascript" src="homepage.js?version=1.2.6"></script>
    • 1
    <link rel="stylesheet" href="base.css?version=2.3.3" type="text/css"/>
    • 1

    使用参数的两种作用:

    1. 客户端会缓存css或js文件,因此每次升级了js或css文件后,改变版本号,客户端浏览器就会重新下载新的js或css文件,起到刷新缓存的作用。

    2. 脚本并不存在,而是服务端动态生成的,因此带了个版本号,以示区别。 即上面代码对于文件来说 等价于 :

    <script type="text/javascript" src="homepage.js"></script>
    • 1
    <link rel="stylesheet" href="base.css" type="text/css"/>
    • 1

    但浏览器会认为他是 该文件的某个版本!

    第一使用最多,也可能两种作用同时使用。

  • 相关阅读:
    centos安装时各个版本的含义
    centos或者ubuntu设置ssh免密码登陆
    centos配置网卡
    如何卸载centos中自带的Java
    基于VHDL的8255可编程并行接口电路设计
    Norns.Urd 中的一些设计
    手把手教你写DI_3_小白徒手支持 `Singleton` 和 `Scoped` 生命周期
    手把手教你写DI_2_小白徒手撸构造函数注入
    手把手教你写DI_1_DI框架有什么?
    手把手教你写DI_0_DI是什么?
  • 原文地址:https://www.cnblogs.com/mabingxue/p/9105371.html
Copyright © 2020-2023  润新知