Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 575|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    前天 15:06
  • 签到天数: 802 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726006
    发表于 2021-4-22 14:27:52 | 显示全部楼层 |阅读模式

    问题描述

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

    问题分析

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

    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"/>
    

      改一下css文件名:

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

      

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

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

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

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

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

      

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

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

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

      

    使用参数的两种作用:

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

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

      <script type="text/javascript" src="homepage.js"></script>
      

        

      <link rel="stylesheet" href="base.css" type="text/css"/>
      

        

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

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

    3. 来源:http://blog.csdn.net/csdn100861/article/details/50684438
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-13 13:06 , Processed in 0.218421 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表