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

  改一下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
时间: 2024-11-11 03:14:00

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

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

原文:http://blog.csdn.net/csdn100861/article/details/50684438 问题描述 部署到服务器后访问发现页面展示不正常,但是刷新之后就会展示正常. 问题分析 可能的原因有 css文件过大,加载缓慢 本地缓存问题,虽然服务器修改了css文件,但是浏览器仍然使用本地缓存的css, 需要用户多刷新一次才能正常展示显然是很不合理的,那么怎么样解决更新后让浏览器请求新的css或js文件呢? 解决办法 方法1 更新文件后更改css/js文件名. 其实解决这个问

Ubuntu 14.04 LTS 火狐浏览器中,鼠标选择文字被删除的解决办法

这篇文章主要介绍了Ubuntu 火狐浏览器中,鼠标选择文字被删除的解决办法,需要的朋友可以参考下在终端中输入命令: ibus-setup将 "在应用程序窗口中启用内嵌编辑模式" 选项取消 原文地址:https://www.cnblogs.com/onelikeone/p/9071460.html

web基础-web工作原理,http协议,浏览器缓存

1,web工作原理 2,http协议 3,浏览器缓存 4,cookie和session -------------------------------------------------------------------------------------------------------------------------------- 1,web工作原理 平时用浏览器,输入网址后回车,页面响应我们想要浏览的内容,简单操作的背后蕴涵了什么原理? 当输入url回车后,客户端(浏览器)会去请求

安装软件后浏览器主页被篡改,弹广告和游戏的解决办法

删除弹广告和游戏的:(因为还有做过别的操作,不确定是否有效) 1.打开注册表编辑器,找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon这一个主键,在右边窗口中找到“LegalNoticeCaption”和“LegalNoticeText”这两个字符串,删除这两个字符串.重启. 2.电脑管家中的操作:(针对进行过常规操作扫描杀毒后仍旧无效时) 进入设置中心 --->选择“杀毒”模块,点击右边的“进入信

关于Chrome浏览器加载axure原型图无法正常显示解决办法

前几天学习到查看原型图理解需求分析的时候,发现用chrome浏览器打开会出现跳转,如下图: 根据网页提示需要安装Axure RP Extension For Chrome 插件,没FQ的情况下是不能直接访问谷歌商店进行下载,所以需要下载离线版. 下载完成后在浏览器中地址栏中输入chrome://extensions/  或者点击浏览器的右上角选择更多工具->扩展程序,将下载到本地的.crx文件拖入到扩展程序中,点击确定完成安装即可.

Linux使用curl 方式安装docker-compose 后执行docker-compose version 检查安装是否成功时出错的解决办法

0x0.缘起: 今天在一台新的Fedora 25上按照官方文档,使用curl方式安装 docker-compose后,验证是否安装成功时出错: 安装时使用的命令为; curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-`uname -s`-`ur/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 我试

兼容各个浏览器的jquyer zclip复制文本插件 无效的解决办法

项目中使用点击文本复制功能,用了这个兼容各个浏览器的插件,但是发现放在最前面正常,放到嵌套的html中就失效. 解决办法: <span style="position: relative;" class="url"><%=ue.tgurl %></span> <span class="letter">←[点击可复制]</span> 增加绝对定位css即可解决

SnagIt截图后无法在编辑器打开,不显示截图内容的解决办法

方法1: 用SnagIt截图后,弹出的编辑器里不显示刚才截图的内容,解决办法如下: 完全退出Snagit和编辑器,删除以下文件夹下的所有文件和文件夹: Win7用户 C:\Users\Your Username\AppData\Local\TechSmith\SnagIt XP用户  C:\Documents and Settings\Your Username\Local Settings\Application Data\TechSmith\SnagIt (注意:关闭文件夹隐藏选项,不然又可

ASP.NET MVC 使用jquery.form.js 异步上传 在IE下返回值被变为下载的解决办法

错误记录: <script type="text/javascript"> $(function () { $(document).off("ajaxSend"); //异步上传 $("#Submit").click(function () { if ($("#selectFileButton").val() == "") { return false; } $("#fileForm&