浏览器缓存

html/css面试题(3)

点点圈 提交于 2020-01-19 21:06:20
一、一次完整的HTTP事务是怎么一个过程 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户 二、HTTPS是如何实现加密 HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是 客户端浏览器 或其他程序与Web服务器之间的 应用层 通信协议 。 https 是一种http与SSL证书共同协作构建的 网络协议 ,https优势就在于能够保证 网络传输高效 的同时,可以很好的维护网络传输过程的 安全 。 如何进行https加密? 这涉及到了对 SSL证书的申请 ,不同类型的网站所需的 SSL证书类型不同 ,申请这一数字证书需要想 数字证书颁发机构验证域名的所有权 以及公司相关的信息,这也是为什么网站部署了SSL证书之后就拥有了一个安全可信的形象。完成申请之后,根据申请证书的教程,完成下载以及安装。这就实现了对http到https的转变,即完成了 https加密 。 三、浏览器是如何渲染页面的 先简要概述浏览器渲染的步骤: 1. 处理HTML标记 并 构建DOM树 2. 处理CSS标记 并构建 CSSOM树 3

千万级用户网站门户前端设计

我们两清 提交于 2020-01-19 19:25:12
千万级用户网站门户前端设计 对于千万级的注册用户的门户项目是前端这块是怎么去实现的,自己在平常的工作中总结了一些经验,也是在不断的挫折中,不断演练的,希望总结出来给大家参考下,和大家一起探讨,一起进步。 一、门户设计一般会遇到哪些难点 (一)、首页打开时间太慢了 在开发一个门户到生产上线后,首页响应时间是检验门户整个系统架构以及开发的重要的一项指标,有时候我们发现在公司测试发现速度都挺快的,怎么到生产首页打开就慢了呢? (二)、页面加载不流畅,总感觉看着不舒服 因为门户一般都是偏向于内容和图片类资源比较多,但是我们打开自己的网页,有时候总感觉加载并不是按照我们期望的那样加载得到,顺其自然,总感觉看起来怪怪的。 (三)、希望用户缓存的地方未进行缓存 很多静态的前端资源,其实在系统未进行更新时候,第一次加载之后,希望缓存到用户的本地,但是因为缓存策略没搞好,经常未进行有效的缓存。 (四)、页面的头部尾部经常需要被第三方嵌入 因为作为一个比较大的门户站点,可能会让很多小的服务接入进来,但是头部和尾部因为是需要保持风格统一,所以经常需要被第三方进行嵌入。 (五)、代码没有进行有效的压缩,导致被窃取 因为作为门户站点,前端如果不进行加密的话,代码很容易被别人进行抄袭伪造,而且还很容易清楚里面的业务逻辑,从而很容易仿造和进行攻击。 (六)、增量静态资源发布 经常门户线上环境需要增加一点小功能

系统缓存全解析

℡╲_俬逩灬. 提交于 2020-01-19 09:33:15
本文转载自: http://www.cnblogs.com/ltp/archive/2009/06/30/1514311.html 作者:ltp 转载请注明该声明。 有时候总听到网友说网站运行好慢,不知如何是好;有时候也总见到一些朋友写的网站功能看起来非常好,但访问性能却极其的差。没有“勤俭节约”的意识,势必会造成“铺张浪费”。如何应对这种情况,充分利用系统 缓存 则是首要之道。 系统缓存有什么好处呢?举个简单的例子,你想通过网页查询某些数据,而这些数据并非实时变化,或者变化的时间是有期限的。例如查询一些历史数据。那么每个用户每次查的数据都是一样的。如果不设置缓存, ASP.NET 也会根据每个用户的请求重复查询 n 次,这就增加了不必要的开销。所以, 可能的情况下尽量使用缓存, 从内存中返回数据的速度始终比去数据库查的速度快,因而可以大大提供应用程序的性能。 毕竟现在内存非常便宜,用空间换取时间效率应该是非常划算的。尤其是对耗时比较长的、需要建立网络链接的数据库查询操作等。 缓存功能是大型网站设计一个很重要的部分。 由数据库驱动的 Web 应用程序,如果需要改善其性能,最好的方法是使用缓存功能。 系统缓存全解析文章索引 系统缓存全解析1:系统缓存的概述 系统缓存全解析2:页面输出缓存 系统缓存全解析3:页面局部缓存 系统缓存全解析4:应用程序数据缓存 系统缓存全解析5

HTTP请求的完全过程

[亡魂溺海] 提交于 2020-01-19 00:41:57
HTTP请求的完全过程 原创 艾伦lee 最后发布于2019-05-27 11:22:45 阅读数 2774 收藏 发布于2019-05-27 11:22:45 分类专栏: 计算机网络 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/ailunlee/article/details/90600174 展开 HTTP请求的完全过程 1.1 浏览器根据域名解析IP地址 浏览器根据访问的域名找到其IP地址。DNS查找过程如下: 浏览器缓存:首先搜索浏览器自身的DNS缓存(缓存的时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否是有域名对应的条目,而且没有过期,如果有且没有过期则解析到此结束。 系统缓存:如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束。 路由器缓存:如果系统缓存也没有找到,则会向路由器发送查询请求。 ISP(互联网服务提供商) DNS缓存:如果在路由缓存也没找到,最后要查的就是ISP缓存DNS的服务器。 1.2 浏览器与WEB服务器建立一个TCP连接 TCP的3次握手。 1.3 浏览器给WEB服务器发送一个HTTP请求 一个HTTP请求报文由请求行

资深阿里程序员一一为你解刨Web前端知识体系结构

≡放荡痞女 提交于 2020-01-18 15:37:01
只要接触过前端,都会指导web前端的知识主要由三部分组成:分别为静态html,样式css,动态javascript(简称js)这三大部分组成。其三部分组成的一个体系的复杂程度不亚于其他一门技术的复杂程度。当然对于跟我一样厉害的那些web前端来说那就是小菜一碟,但是很多人都只学了表面,基础部分,很多重要的知识,深入部分都是被忽视了!其实这也就导致了部分前端开发工作者学了前端,但是却找不到工作,有工作但是工资少的现象! 现在为大家一一解刨Web前端知识体系结构,在阿里从事了6年的全栈,也是从前端慢慢成长过来的,也想跟很多小伙伴说一句:付出与收获是成正比的! TextOne:首先最最最基础的部分html部分 1、常见的BOM对象 BOM(Browser Object Mode)浏览器对象模型,是Javascript的重要组成部分。它提供了一系列对象用于与浏览器窗口进行交互,这些对象通常统称为BOM。 window窗口对象。它表示整个浏览器窗口,主要用来操作浏览器窗口。同时, window对象还是 ECMAScript 中的 Global 对象,因而所有全局变量和函数都是它的属性,且所有原生的构造函数及其他函数也都存在于它的命名空间下。 document 即文档对象,也是window对象的一个属性。整个HTML代码解析完以后,会生成一个由不同节点组成的树形结构,俗称DOM树

nginx缓存

时光毁灭记忆、已成空白 提交于 2020-01-18 08:13:35
nginx缓存 cache of nginx 缓存即数据交换的缓冲区,当A与B进行数据交互时,先去找缓存中是否有数据,若在缓存中找不到想要的数据,那么再去B中找;找到了就直接返回不用和B再打交道了。 1.缓存概述 生活中有很多场景,都和缓存相似。这不过年了,秃头男突然想吃猪肉炖粉条了,就去冰箱里去拿猪肉,发现冰箱里空空如也,于是乎就去集市买了两斤。单身汉一人一顿也吃不完啊,于是切了半斤把剩余的又放冰箱里了,美美的吃了一顿。下次再吃就不用去集市了,直接从冰箱里拿即可,等吃完再去集市买呗。 哲学上说存在即合理,那么缓存的存在肯定有他的优势,相反的,有好处就必然会有坏处,事物总是有两面性的。 我们购买电脑的时候常常会看到CPU的描述会有6m或者8m、二级或者三级缓存,对于普通消费者来说肯定是一脸懵逼不知所云,光听销售员吹的天花乱坠去了。对于开发者来说,缓存已经不是一个陌生的东西了,在这个21世纪快速消费的时代,满足消费者的极致体验和与消费者的快速交互,是互联网产品都要解决的一大难题。从而应运而生的各种技术,百家齐放,相互竞争,以让自家产品稳定运行、响应速度快人一等。 缓存追求的是快。在没有缓存时,一个get请求要从服务器获取数据,一般都会经过服务器方的统一网关入口,然后再到具体的服务器,服务器中存储数据的地方一般都是数据库,所以在服务器这里还要再调用应用程序比如MySQL

浏览器缓存机制的深入解析

落花浮王杯 提交于 2020-01-18 06:47:24
一、简介浏览器缓存 浏览器缓存就是把一个已经请求过的Web资源(如html页面,图片,js,数据等)拷贝一份副本储存在浏览器中。缓存会根据进来的请求保存输出内容的副本。当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向服务器再次发送请求,从而返回新的数据。 缓存的优点: 优秀的缓存策略可以缩短网页请求资源的距离,减少延迟。 缓存文件可以重复利用。 减少带宽资源浪费,降低网络负荷。 加快页面渲染速度。 常规数据请求主要分为三步:HTTP请求、后端处理、浏览器响应三个步骤,浏览器缓存可以帮助我们在第一和第三步骤中优化性能。比如说直接使用缓存而不发起请求,或者发起了请求但后端存储的数据和前端一致,那么就没有必要再将数据回传回来,这样就减少了响应数据。 理解了缓存和缓存策略的优点,接下来我们带着以下几个问题来深入讲解缓存机制。 缓存的流程 缓存的储存位置 缓存的分类以及它们之间的异同、优劣。 二、浏览器缓存的流程 HTTP请求就是客户端和服务端之间应答的模式,当浏览器发起请求到服务端处理,服务端响应,再到浏览器接受数据,渲染页面,这其中数据是如何被浏览器缓存以及之后如何被浏览器再次使用的,请先看下图。 缓存流程.png 通过上图容易理解 浏览器每次发起请求,都会先在浏览器缓存中查找该请求的结果以及缓存标识

php中ob缓存机制

核能气质少年 提交于 2020-01-18 03:55:30
1.ob缓存运行方式 2.注意:在程序中如果开启ob_start(),所有的echo输出都会保存到ob缓存中,可以使用ob系列函数进行操作,如果没有,默认情况下,在程序执行结束,会把缓存中的数据发送给浏览器,如果,你使用ob_clean()类似的函数,会情况缓存中的内容,那么就不用有数据发送给浏览器 ob_start() 开启 ob_get_contents() 获取缓存中的数据 ob_clean() 清空缓存中的数据 ob_end() 关闭ob缓存 ob_end_clean() 清空缓存并关闭ob缓存 ob_flush() 刷新缓冲区【就是把ob缓存中的内容放到程序缓存中, 缓存中内容就是空了 ,默认是在程序执行完后再放到程序缓存中,用此函数可以在程序执行时任意时候放到程序缓存中】 flush() 把程序缓存内容推送到浏览器【一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。】 说的简单点:默认情况下,php会把输出的内容放到【程序缓存】中,待程序跑完,把【程序缓存】中的东西全部抛到浏览器中;现在使用ob缓存,开启后,所有的输出都会放到【ob缓存】中,头信息(header)等这些依旧存放到【程序缓存】中,待程序跑完,【ob缓存】中的内容会被放到【程序缓存

js知识点小结

你。 提交于 2020-01-18 03:16:54
文章目录 1、原始值和引用值类型及区别 2、判断数据类型typeof、instanceof、Object.prototype.toString.call()、constructor 3、类数组与数组的区别与转换 4、 数组的常见API 5、bind、call、apply的区别 6、new的原理 7、如何正确判断this(区别箭头函数) 8、严格模式与非严格模式的区别 9、原型和原型链 10、prototype与__proto__的关系与区别 11、继承的实现方式及比较 12、作用域和作用域链、执行上下文 13、闭包及其作用 14、深拷贝与浅拷贝 15、防抖和节流 16、Js事件绑定时,函数名加括号和不加括号区别 17、DOM常见的操作方式 18、 Array.sort()方法与实现机制 19、 Ajax的请求过程 20、JS的垃圾回收机制 21、JS中的String、Array和Math方法 22、addEventListener(DOM2级事件处理程序)和onClick()(DOM0级事件处理程序)的区别 23、立即执行函数 24、整个HTML解析过程与JS脚本解析和执行顺序 25、new和Object.create的区别 26、DOM的location对象 27、浏览器从输入URL到页面渲染的整个流程 28、跨域、同源策略及跨域实现方式和原理 29、浏览器的回流(Reflow

秒杀系统架构分析与实战

99封情书 提交于 2020-01-18 00:02:02
0 系列目录 秒杀系统架构 秒杀系统架构分析与实战 1 秒杀业务分析 正常电子商务流程 (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货 秒杀业务的特性 (1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高; 2 秒杀技术挑战 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有: 对现有网站业务造成冲击 秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访问量大的特点,如果和网站原有应用部署在一起,必然会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪。 解决方案:将秒杀系统独立部署,甚至 使用独立域名,使其与网站完全隔离 。 高并发下的应用、 数据库 负载 用户在秒杀开始前,通过不停刷新浏览器页面以保证不会错过秒杀,这些请求如果按照一般的网站应用 架构 ,访问应用服务器、连接数据库,会对应用服务器和数据库服务器造成负载压力。 解决方案:重新设计秒杀商品页面,不使用网站原来的商品详细页面, 页面内容静态化,用户请求不需要经过应用服务 。 突然增加的网络及服务器带宽 假设商品页面大小200K(主要是商品图片大小),那么需要的网络和服务器带宽是2G(200K×10000),这些网络带宽是因为秒杀活动新增的