浏览器缓存

什么是高可用?

心已入冬 提交于 2019-11-28 07:10:43
一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可用性是100%。 如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。 很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。 百度的搜索首页,是业内公认高可用保障非常出色的系统,甚至人们会通过 www.baidu.com 能不能访问来判断“网络的连通性”,百度高可用的服务让人留下啦“网络通畅,百度就能访问”,“百度打不开,应该是网络连不上”的印象,这其实是对百度HA最高的褒奖。 二、如何保障系统的高可用 我们都知道,单点是系统高可用的大敌,单点往往是系统高可用最大的风险和敌人,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原则是“集群化”,或者叫“冗余”:只有一个单点,挂了服务会受影响;如果有冗余备份,挂了还有其他backup能够顶上。 保证系统高可用,架构设计的核心准则是:冗余。 有了冗余之后,还不够,每次出现故障需要人工介入恢复势必会增加系统的不可服务实践。所以,又往往是通过“自动故障转移”来实现系统的高可用。 接下来我们看下典型互联网架构中,如何通过冗余+自动故障转移来保证系统的高可用特性

http的缓存机制面试版

北城以北 提交于 2019-11-28 07:09:50
最近面试了4间公司,有3间问了我http的缓存机制。面试过后我上网查了挺多资料的,找到了一个相对不错的!稍微画了一下重点。 先简单介绍一下HTTP报文: HTTP报文就是浏览器和服务器间通信时发送及响应的数据块。 浏览器向服务器请求数据,发送请求(request)报文;服务器向浏览器返回数据,返回响应(response)报文。 报文信息主要分为两部分 1.包含属性的首部(header)————————–附加信息(cookie,缓存信息等)与缓存相关的规则信息,均包含在header中 2.包含数据的主体部分(body)———————–HTTP请求真正想要传输的部分 1.Expires策略 不过Expires 是HTTP 1.0的东西,现在默认浏览器均默认使用HTTP 1.1,所以它的作用基本忽略。 2.Cache-control策略(重点关注): Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires。 它的值有一下6种 Cache -Control 是最重要的规则。常见的取值有 private 、 public 、no -cache 、 max -age ,no -store ,默认为

浏览器缓存机制详解(一)

独自空忆成欢 提交于 2019-11-28 07:09:26
浏览器缓存机制可以极大的提升用户体验,另一方面会因为读取缓存而展示了错误的东西,因而在开发中要设法将其删除。 什么是浏览器缓存? 浏览器缓存就是把一个已经请求过的web资源(如html页面,图片,JS,数据)拷贝一份放在浏览器中。缓存会根据进来的请求保存输入内容的副本。当下一个请求到来的时候,如果是相同的URL,浏览器会根据缓存机制决定是直接使用副本响应访问请求还是向源服务器再次发起请求。 使用缓存的原因 (1)减少网络带宽消耗 当web缓存副本被使用时,只会产生极小的网络流量,可以有效降低运营成本。 (2)降低服务器压力 给网络资源设定有效期之后,用户可以重复使用本地缓存,减少对源服务器的请求,简介降低了对服务器的压力,同时搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器压力。 (3)减少网络延迟 缓存的使用可以明显加快页面打开速度,达到更好的用户体验。 浏览器的缓存机制 对于浏览器的缓存来讲,这些规则是在HTTP协议头部和HTML页面的Meta标签中定义的。他们分别从新鲜度和校验值两个维度来规定浏览器是否可以直接使用缓存中的副本,还是需要去源服务器获取新版本。 过期机制:指的是缓存副本的有效期。一个缓存的副本必须满足以下条件,浏览器会认为它是有效的,足够新的: 1.含有完整的过期时间控制头信息(HTTP协议报头),并且仍在有效期内 2

彻底弄懂HTTP缓存机制及原理

安稳与你 提交于 2019-11-28 07:07:12
转载地址: https://www.cnblogs.com/chenqf/p/6386163.html 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。 但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。 在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。 在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送及响应的数据块。 浏览器向服务器请求数据,发送请求(request)报文;服务器向浏览器返回数据,返回响应(response)报文。 报文信息主要分为两部分 1.包含属性的首部(header)--------------------------附加信息(cookie,缓存信息等)与缓存相关的规则信息,均包含在header中 2.包含数据的主体部分(body)-----------------------HTTP请求真正想要传输的部分 缓存规则解析 为方便大家理解,我们认为浏览器存在一个缓存数据库,用于存储缓存信息。 在客户端第一次请求数据时

【缓存技术原理】浏览器端缓存机制详解

こ雲淡風輕ζ 提交于 2019-11-28 07:07:00
欢迎关注公众号: -----------------------------------------正文-------------------------------------------------- 浏览器缓存是浏览器端保存数据用于快速读取或避免重复资源请求的优化机制,有效的缓存使用可以避免重复的网络请求和浏览器快速地读取本地数据,整体上加速网页展示给用户。浏览器端缓存的机制种类较多,总体归纳为九种,这里详细分析下这九种缓存机制的原理和使用场景。打开浏览器的调试模式->resources左侧就有浏览器的8种缓存机制。 第一种 Http缓存 chrome控制台下的Frames即展示的是浏览器的http文件级缓存。http缓存是基于HTTP协议的浏览器文件级缓存机制。(如: Expires; Cache-control等)估计大多数人很少说客户端缓存,包括我在内。那是因为我们编程时基本不考虑客户端缓存,书上也写得少。其实浏览器自动会管理缓存,但了解它至少知道有这么回事,有事编程还要控制客户端缓存。浏览器缓存就是当你打开一个网页,浏览器会自动下载副本到你电脑上,就相当于你另存为网页到某个地方而已,只不过这里是自动而已。当然不是浏览器能把各种 网页都能下载到本地电脑上,它是有特殊情况。一般html,后者request是get请求,而post一般不缓存。(这个后面会说到

Http缓存机制

冷暖自知 提交于 2019-11-28 07:06:44
什么是Http缓存 缓存缓存,就是把需要的东西存起来,不需要每次都去请求。主要目的减小服务器压力,放到客户端上来讲,还利于节省流量,还能流畅的把UI显示出来,提高了用户体验。对于Http缓存来讲,主要的就是校验缓存的有效性,也就是新鲜度。如果客户端不能及时响应服务端的数据变化,缓存一直不能被更新,那不就是得不偿失了? Http缓存策略 1.Expires策略 Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。Expires规定了缓存失效时间,客户端拿当前时间和这个失效时间比较,如果超过了这个时间,即无效。 Expires策略有2个明显的缺点: 1.缓存时间依赖于客户端,每个客户端的时间可能不相同,精度不高。 2.缓存有效期的时间精度不高。 举个例子,一个新闻列表的缓存时间是有后台运营决定的,当我产生这个列表的时候是无法确定该列表到底多久以后会被更新,只能预估一个时间。只有当列表被更新,我才知道这个更新时间之前的资源都是过期的。 而且,Expires是HTTP1.0的东西,而Cache-Control是HTTP1.1的,规定如果max-age和Expires同时存在,前者优先级高于后者 2.Cache-control策略 Cache -Control指定请求和响应遵循的缓存机制。

HTTP缓存机制与原理详解

空扰寡人 提交于 2019-11-28 07:05:34
1.1 - 缓存 缓存可以重用已获取的资源能够有效的提升网站与应用的性能。 Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间。 借助 HTTP 缓存,Web 站点变得更具有响应性。 缓存分为两点:强制缓存和协商缓存 1.2 - 强制缓存 概念 强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程。 简单来讲就是强制浏览器使用当前缓存 所请求的数据在缓存数据库中尚未过期时,不与服务器进行交互,直接使用缓存数据库中的数据。当缓存未过期时基本流程如下: 实现:通过服务器端设置响应头字段来控制强制缓存的过期时间 expires (http1.0) 其指定了一个日期/时间, 在这个日期/时间之后,HTTP响应被认为是过时的。但是它本身是一个HTTP1.0标准下的字段,所以如果请求中还有一个置了 “max-age” 或者 “s-max-age” 指令的Cache-Control响应头,那么 Expires 头就会被忽略。 cache-control (http1.1) 通用消息头用于在http 请求和响应中通过指定指令来实现缓存机制。 cache-control 优先级比 expires 高 expires 日期(new Date().toGMTString()) 缓存的最大有效时间 cache-control max-age(单位s)

聊一聊HTTP的缓存机制与原理

孤街醉人 提交于 2019-11-28 07:05:22
概述 缓存的重要性不言而喻,通过网络请求资源缓慢并且降低了客户端的用户体验,增添了服务端的负担。很多短期之内不会经常发生变化的资源文件没必要每次访问都想服务端进行数据请求,而缓存策略的使用就是为了改善客户端的呈现时间,降低服务端的负担。 对于HTTP的缓存机制来说,策略体现在HTTP的头部信息的字段上,而这些策略 根据是否需要重新向服务器端发起请求 可以分为 强缓存 和 协商缓存 两大类。接下来用UML时序图的形式来呈现这两大类缓存策略的大体过程。 Tips : Vscode 配合插件 plantUML 画(写)UML图很爽。相比之前用的 ProcessOn 拖拽的形式,你只需要熟悉 plantUML 的语法,在你的电脑上安装一下 java , Graphviz 的环境,不用操心样式的展现UML真心舒服。下面的图我就是用这个工具去画的,很推荐。 强缓存 强缓存紧密联系着一个缓存时间期限,当浏览器请求资源的时候会查看缓存中的资源是否存在并且确定该缓存的资源是否过了“保质期”,若没有超过保质期则将取得缓存中的资源进行下一步处理 协商缓存 可见协商缓存无论如何都会和服务器交互,比较强缓存稍微要复杂一点,但是二者是相辅相成并且可以共同存在的,强缓存优先级较高,意味着请求一个资源时会先比较强缓存的字段,如果命中则不会再执行接下来的协商缓存的过程。 接下来就是要介绍,两类缓存相关HTTP

nginx负载均衡?

蹲街弑〆低调 提交于 2019-11-28 06:30:23
本文目录 1 什么是负载均衡? 2 HTTP重定向实现负载均衡 3 DNS负载均衡 4 反向代理负载均衡 5 负载均衡组件 回到目录 1 什么是负载均衡? 当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。 那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。 下面详细介绍负载均衡的四种实现方式 回到目录 2 HTTP重定向实现负载均衡 过程描述 当用户向服务器发起请求时,请求首先被集群调度者截获;调度者根据某种分配策略,选择一台服务器,并将选中的服务器的IP地址封装在HTTP响应消息头部的Location字段中,并将响应消息的状态码设为302,最后将这个响应消息返回给浏览器。 当浏览器收到响应消息后,解析Location字段,并向该URL发起请求,然后指定的服务器处理该用户的请求,最后将结果返回给用户。 在使用HTTP重定向来实现服务器集群负载均衡的过程中,需要一台服务器作为请求调度者。用户的一项操作需要发起两次HTTP请求,一次向调度服务器发送请求,获取后端服务器的IP,第二次向后端服务器发送请求,获取处理结果。 调度策略

111

我们两清 提交于 2019-11-28 06:29:50
数据库: B树就是 B-树 B&B+都用到了磁盘块的概念,每块大概4k,利用了磁盘的预读和同一数据块内很有可能一起用到 Redis端口6379 事务四大特性(ACID)原子性(不可再分 要么都发生 要么不发生)、一致性、隔离性、持久性 数据库隔离级别:读取未提交数据=脏读,可以读取其他事务提交的数据 大多数默认级别,不可重复读-MySQL默认,可重读=幻读 InnoDB默认,串行化 读写阻塞。并行依次降低,安全性提高。 innodb和myisam区别:MyIsam-允许没有主键 表锁 不产生死锁 读快 不支持事务操作,外键以及行级锁 保存表行数count直接返回行数 支持全文索引 存储数据文件 索引/数据文件分离 索引文件保存数据地址; InnoDB-没主键或非空唯一索引它会自动生成一个用户不可见的主键 不保存表的行数,count()会遍历整个表,但是加上where俩引擎都一样 不支持全文索引 写较快 并发高 索引和数据一起存在表空间-数据记录本身被存于主索引的叶子节点上 行锁,并发高,可能死锁 表数据文件就是主索引-叶节点包含完整数据记录,数据按照主键聚集,所以InnoDB必须有主键,没有也会 自生成长度6字节的 辅助索引先检索主键再根据主键找到数据 设计主键时长度不能过大因为辅助索引都引用主索引,过大引起辅助索引过大 使用单调的字段,非单调在插入新数据时会为了维持其特性而频