Ⅰ 浏览器缓存的强缓存
浏览器的缓存分为强缓存和协商缓存。
1、浏览器在加载资源时,先根据 这个资源的一些http header 判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源, 不会发请求到服务器 。比如某个css文件,如果浏览器在加载它所在的网页时,这个css文件的缓存配置命中了强缓存,浏览器就直接从缓存中加载这个css,连请求都不会发送到网页所在服务器。
2、当强缓存没有命中的时候, 浏览器一定会发送一个请求到服务器,通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存 ,如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会从自己的缓存中去加载这个资源。 强缓存与协商缓存的共同点是:如果命中,都是从客户端缓存中加载资源,而不是从服务器加载资源数据;区别是:强缓存不发请求到服务器,协商缓存会发请求到服务器。
3、当协商缓存也没有命中的时候,浏览器直接从服务器加载资源数据。
这里仅介绍一下强缓存的实现:
强缓存是利用Expires或者Cache-Control这两个http response header实现的,它们都用来表示资源在客户端缓存的有效期。
Expires是较老的强缓存管理header,由于它是服务器返回的一个绝对时间,在服务器时间与客户端时间相差较大时,缓存管理容易出现问题,比如随意修改下客户端时间,就能影响缓存命中的结果。所以在http1.1的时候,提出了一个新的header,就是Cache-Control,这是一个相对时间,在配置缓存的时候,以秒为单位,用数值表示,如:Cache-Control:max-age=315360000
这两个header可以只启用一个,也可以同时启用,当response header中,Expires和Cache-Control同时存在时,Cache-Control优先级高于Expires:
Ⅱ 怎样解决css缓存的问题
ctrl+f5强制刷新试试。我一般在chrome里调试,出现这种情况,都是ctrl+f5强制刷新就好了。
Ⅲ discuzX2 论坛修改CSS、更新缓存的问题
你用编辑器的代码搜索的功能,查找真正的css所在目录,
一般都是“template”文件夹内,
而不要使用cache下面的。
修改好之后,在管理界面刷新缓存就可以了。
discuz页面调用的都是缓存的css文件。
Ⅳ 我往线上更新css文件,如何让网页实现自动更新
最初最初的网页处理形式是,css有更新,网页则会自动重新调用css文件,以保证使用最新的样式。
但后来随着各大浏览器的网页缓存、服务器与CDN技术等等,即便你上传覆盖了新的css文件,那么除非用户手动刷新,否则无法正常调用最新的css。
根据你的网站项目,可以在css地址后加版本号的形式,如/style.css?v=123,每次更新手动修改版本号,实现全站自动更新css。
还有更好的方法就是,将css文件生成一个hash值,放到css文件名里,这样每次修改css,都会生成一个新名字的css。
再高级一点,涉及大型项目,如css、js的更新,就需要版本控制机制或工具来管理。
Ⅳ 每次发布前端的时候 怎么强制更新缓存
这样可以清除缓存:
System.Web.HttpContext.Current.Cache.Remove(string CacheName)
如果你的图片更新频繁,你就没必要把那个图片加入到缓存,如果一定要加,而又不想每次刷新都清除缓存,那你只有给你改变过的图片加上标识...
缓存是为了把一些变更少的内容保存在客户端,如果你的图片老在更新的话,那我觉得那个图片不应该在缓存的范围内,当然如果你有办法强制清除用户的缓存的话,这个也不难实。关键的是,你的图片是同名
Ⅵ sass构建CSS时,如何给文件随机加版本号,以防止老文件缓存
1、线上的时候:在模板文件里对css跟js的引入路径后面追加一个类似于常量来做版本号
<link rel="stylesheet" href="style.css?version=20150828" />
2、线下测试的时候:对css跟js的引入路径后面追加随机数,时时刻刻更新,避免缓存影响了调试。
3、线下测试后:升级常量的版本号,把代码更新上去,这样用户的浏览器刷新就用到了新的样式,而又用到了缓存。
Ⅶ 如何自动给CSS、JS添加版本号防止客户端缓存。
怎么说呢,个人有个笨点的办法,就是在代码中加上JS版本号的全局变量,应用JS时利用后台代码添加。
这样更改过JS时,将JS的文件名后边带上个自定义的版本号,再将JS版本号的变量修改一下就好了。其他程序由于是动态的读取JS文件名,所以不用再修改,也不用怕漏改。
Ⅷ css修改后重新发版怎么去缓存
在css中,可以使用content属性来清除css缓存,只需要在meta标签里添加“CONTENT="no-cache/0"”即可。content属性可设置或者返回meta元素content属性值,该属性指定了meta信息的内容。