浏览器缓存

Web项目中,清理浏览器缓存的几种方式

别说谁变了你拦得住时间么 提交于 2019-12-01 15:53:53
本文来源: https://blog.csdn.net/HardyCheers/article/details/81632856 在B/S架构的项目中,访问web项目时,往往需要清理浏览器的缓存数据,js ,css 等等。 //方法1:在引用的js ,css ,图片,等文件的url 处加一个变量,生成一个随机数字 <script type="text/javascript" src="<%=request.getContextPath()%>/test/common/jquery.js?r="+Math.random()></srcipt> //方法2:在jsp或html页面中,meta标签中添加属性值 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="0"> //方法3:在js提交表单时的请求方法上添加控制缓存的方法 //如果是form表单提交,则在表单上添加一个属性 <body onLoad="javascript:document.creatForm.reset();"> //如果是jquery的ajax提交方式,则如下

对前端缓存的研究--------引用

寵の児 提交于 2019-12-01 15:22:56
大家都知道缓存的英文叫做 cache。但我发现一个有趣的现象:这个单词在不同人的口中有不同的读音。为了全面了解缓存,我们得先从读音开始,这样才能够在和其他同事(例如 PM)交(zhuāng)流(bī)时体现自己的修(bī)养(gé) 基本的网络请求就是三个步骤:请求,处理,响应。 后端缓存主要集中于“处理”步骤,通过保留数据库连接,存储处理结果等方式缩短处理时间,尽快进入“响应”步骤。 而前端缓存则可以在剩下的两步:“请求”和“响应”中进行。在“请求”步骤中,浏览器也可以通过存储结果的方式直接使用资源,直接省去了发送请求;而“响应”步骤需要浏览器和服务器共同配合,通过减少响应内容来缩短传输时间。 按缓存位置分类 缓存的文章会直接从 HTTP 协议头中的缓存字段开始,例如 Cache-Control, ETag, max-age 等。但偶尔也会听到别人讨论 memory cache, disk cache 等。 实际上,HTTP 协议头的那些字段,都属于 disk cache 的范畴,是几个缓存位置的其中之一。因此本着从全局到局部的原则,我们应当先从缓存位置开始讨论。等讲到 disk cache 时,才会详细讲述这些协议头的字段及其作用。 Network -> Size 一列看到一个请求最终的处理方式:如果是大小 (多少 K, 多少 M 等) 就表示是网络请求,否则会列出 from

浏览器 HTTP 协议缓存机制详解

孤者浪人 提交于 2019-12-01 15:06:05
最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control、为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag,有时又没有带?等等。。。 后来查了一些资料以及同事亲自验证,总算对这些问题有了个清晰的理解,现在整理出来以备忘。 1、缓存的分类 缓存分为服务端侧(server side,比如 Nginx、Apache)和客户端侧(client side,比如 web browser)。 服务端缓存又分为 代理服务器缓存 和 反向代理服务器缓存(也叫网关缓存,比如 Nginx反向代理、Squid等),其实广泛使用的 CDN 也是一种服务端缓存,目的都是让用户的请求走”捷径“,并且都是缓存图片、文件等静态资源。 客户端侧缓存一般指的是浏览器缓存,目的就是加速各种静态资源的访问,想想现在的大型网站,随便一个页面都是一两百个请求,每天 pv 都是亿级别,如果没有缓存,用户体验会急剧下降、同时服务器压力和网络带宽都面临严重的考验。 2、 浏览器缓存机制 详解 浏览器缓存控制机制有两种:HTML Meta标签 vs. HTTP头信息 2.1 HTML Meta标签控制缓存 浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires; Cache-control等)

(转)装逼必备:大型分布式网站术语分析

♀尐吖头ヾ 提交于 2019-12-01 12:55:51
1、I/O优化 1、增加缓存,减少磁盘的访问次数。 2、优化磁盘的管理系统,设计最优的磁盘方式策略,以及磁盘的寻址策略,这是在底层操作系统层面考虑的。 3、设计合理的磁盘存储数据块,以及访问这些数据库的策略,这是在应用层面考虑的。例如,我们可以给存放的数据设计索引,通过寻址索引来加快和减少磁盘的访问量,还可以采用异步和非阻塞的方式加快磁盘的访问速度。 4、应用合理的RAID策略提升磁盘I/O。 2、Web前端调优 1、减少网络交互的次数(多次请求合并) 2、减少网络传输数据量的大小(压缩) 3、尽量减少编码(尽量提前将字符转化为字节,或者减少从字符到字节的转化过程。) 4、使用浏览器缓存 5、减少Cookie传输 6、合理布局页面 7、使用页面压缩 8、延迟加载页面 9、CSS在最上面,JS在最下面 10、CDN 11、反向代理 12、页面静态化 13、异地部署 3、服务降级(自动优雅降级) 拒绝服务和关闭服务 4、幂等性设计 有些服务天然具有幂等性,比如讲用户性别设置为男性,不管设置多少次,结果都一样。但是对转账交易等操作,问题就会比较复杂,需要通过交易编号等信息进行服务调用有效性校验,只有有效的操作才能继续执行。 (注:幂等性是系统的接口对外一种承诺(而不是实现), 承诺只要调用接口成功, 外部多次调用对系统的影响是一致的. 声明为幂等的接口会认为外部调用失败是常态,

web前端性能优化总结

孤街浪徒 提交于 2019-12-01 12:54:44
转自:http://www.2cto.com/kf/201604/498725.html 网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评论等等。而前端呢?其实应该是属于功能的表现。并且影响用户访问体验的绝大部分来自前端页面。 而我们建设网站的目的是什么呢?不就是为了让目标人群来访问吗?所以我们可以理解成前端才是真正和用户接触的。除了后台需要在性能上做优化外,其实前端的页面更需要在性能优化上下功夫,只有这样才能给我们的用户带来更好的用户体验。就好像,好多人问,男人在找女朋友的时候是不是只看外表,一些智慧的男人给出了这样的回答:脸蛋和身材决定了我是否想去了解她的思想,思想决定了我是否会一票否决她的脸蛋和身材。同理,网站也是这样,网站前端的用户体验决定了用户是否想要去使用网站的功能,而网站的功能决定了用户是否会一票否决前端体验。 不仅仅如此,如果前端优化得好,他不仅可以为企业节约成本,他还能给用户带来更多的用户,因为增强的用户体验。说了这么多,那么我们应该如何对我们前端的页面进行性能优化呢? 一般说来,web前端指网站业务逻辑之前的部分,包括浏览器加载、网站视图模型、图片服务、CDN服务等,主要优化手段有浏览器访问、使用反向代理才、CDN等。 浏览器访问优化 浏览器请求处理流程如下图: 1、减少http请求,合理设置

服务端高并发分布式架构演进之路

孤人 提交于 2019-12-01 11:41:13
https://segmentfault.com/a/1190000018626163#articleHeader18 1. 概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。 2. 基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍: 分布式 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上 高可用 系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性 集群 一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。如Zookeeper中的Master和Slave分别部署在多台服务器上,共同组成一个整体提供集中配置服务。在常见的集群中,客户端往往能够连接任意一个节点获得服务,并且当集群中一个节点掉线时,其他节点往往能够自动的接替它继续提供服务,这时候说明集群具有高可用性 负载均衡 请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求负载,则可认为系统是负载均衡的 正向代理和反向代理

高并发高流量网站架构详解

喜你入骨 提交于 2019-12-01 11:12:34
镜像网站技术 镜像网站是指将一个完全相同的站点放到几个服务器上,分别有自己的URL,这些服务器上的网站互相称为镜像网站。镜像网站和主站 并没有太大差别,或者可以视为主站的拷贝。镜像网站的好处是:如果不能对主站作正常访问(如服务器故障,网络故障或者网速太慢等),仍能通过镜像服务器获得服务。不便之处是:更新网站内容的时候,需要同时更新多个服 务器;需要用户记忆超过一个网址,或需要用户选择访问多个镜像网站中的一个,而用户选择的,不一定是最优的。在用户选择的过程中,缺乏必要的可控性。 在互联网发展的初期,互联网上的网站内容很少,而且大都是静态内容,更新频率底。但因为服务器运算能力低,带宽小,网速慢,热门网站的访问压力还是很大。 镜像网站技术在这种情况下作为一种有效解决方案,被广泛采用。随着互联网的发展,越来越多的网站使用服务器端脚本动态生成内容,同步更新越来越困难,对可 控性要求越来越高,镜像技术因为不能满足这类网站的需要,渐渐的淡出了人们的视线。但有一些大型的软件下载站,因为符合镜像网站的条件——下载的内容是静态的,更新频率较低,对带宽,速度要求又比较高, 如国外的SourceForge (http://www.SourceForge.net, 著名开源软件托管网站),Fedora(http://fedoraproject.org,RedHat 赞助的 Linux 发行版)

Java 高并发之缓存

一曲冷凌霜 提交于 2019-12-01 11:09:17
使用缓存的场景 一般来说, 现在网站 或者 app 的整体流程可以用下图来表示. 用户从浏览器或者app 发起请求 > 到网络转发 > 到服务 > 再到数据库 , 接着再返回把请求内容呈现给用户.但是随着访问量的增大 , 访问内容的增加, 应用需要支撑更多的并发, 同时应用服务器和数据库服务器所要做的计算越来越多, 但是应用服务器的资源有限, 文件内容的读写也是有限的 . 如何利用有限的资源提高更大的吞吐量 , 那就是 引入缓存 , 打破标准的流程, 在每个环节中 , 请求可以从缓存中直接获取目标数据并返回 , 从而减少应用的计算量, 提升应用的响应速度 , 让有限的资源服务更多的用户. 如下图, 缓存可以出现在 1 ~ 4 的各个环节中. 缓存的特征 命中率 = 命中数 / (命中数+ 没有命中数) 命中率越高 , 说明使用缓存的收益越好 , 应用性能越好, 响应的时间越短 , 吞吐量越高 ,抗并发的能力越强 最大元素(空间) 代表缓存中可以存放的最大元素的数量 , 一旦缓存中元素的数量超过最大空间 ,是指缓存数据所在空间超过最大支持的空间, 将会触发清空策略 . 根据不同的场景合理的设置最大元素值, 可以在一定程度上提高缓存的命中率, 从而更有效的使用缓存 . 清空策略 FIFO first in first out 先进先出 最先进入缓存空间的数据 , 在缓存不够的情况下,

架构- 缓存

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-01 10:12:42
数据库变为瓶颈后, 数据查询如何加速和优化? 正常来说有了主从分离和分库分表之后,已经可以支撑十几万的DAU,但量大了以后,磁盘io会成为一个瓶颈,需要额外方案去提供性能 ---缓存 缓存其实不一定非要内存里,再某些场景下可以使用SSD作为冷数据的缓存,比如360开源的pika就是SSD存储数据解决redis的容量瓶颈 缓存是一种空间还时间的性能优化手段 http 协议的缓存机制, 当我们第一次请求静态资源时,比如一张图片,服务端除了返回图片信息,在响应头里还有一个Etag的字段,浏览器会缓存 图片信息及这个字段的值, 当下一次再请求时,浏览器发起的请求头里会有个if-none-match的字段,并且把etag的值写进去发给服务端, 服务端比较是否有变化 没变化,返回304,浏览器使用缓存的图片信息, 通过缓存协商的方式,可以减少网络传输的数据大小,从而提升页面展示的性能 ----缓存区 说简单点儿,类似于批量处理,减少处理次数,毕竟处理次数又是也是io操作,会影响效率 缓存分类: 1、静态缓存 2、分布式缓存 3、热点本地缓存 1、静态缓存- html 缓存到nginx服务器上, 这样访问页面会优先访问web服务器的静态页面 2、memcached, redis 等 3、遇到热点数据时,需要进行本地缓存,阻挡热点查询对于分布式缓存节点或者数据库等压力,比如明星微博,热点话题之类的

web网站的性能优化

旧时模样 提交于 2019-12-01 10:07:19
Web前端性能优化 1、减少http请求 http协议是无状态的应用层协议,意味着每次http请求都需要建立通信链路、进行数据传输,而在服务器端,每个http请求都需要启动独立的线程去处理。减少http请求的数目可有效提高访问性能。 减少http的主要手段是合并CSS、合并javascript、合并图片。 2、使用浏览器缓存 对一个网站而言,CSS、javascript、logo、图标,这些静态资源文件更新的频率都比较低,而这些文件又几乎是每次http请求都需要的。如果将这些文件缓存在浏览器中,可以极好的改善性能。通过设置http头中的cache-control和expires的属性,可设定浏览器缓存,缓存时间可以自定义。 3、启用压缩 在服务器端对文件进行压缩,在浏览器端对文件解压缩,可有效减少通信传输的数据量。如果可以的话,尽可能的将外部的脚本、样式进行合并,多个合为一个。文本文件的压缩效率可达到80%以上,因此HTML、CSS、javascript文件启用GZip压缩可达到较好的效果。但是压缩对服务器和浏览器产生一定的压力,在网络带宽良好,而服务器资源不足的情况下要综合考虑。 4、CSS放在页面最上部,javascript放在页面最下面 浏览器会在下载完成全部CSS之后才对整个页面进行渲染,因此最好的做法是将CSS放在页面最上面,让浏览器尽快下载CSS。