浏览器缓存

前端基础精简总结

梦想的初衷 提交于 2019-11-29 17:42:29
更好阅读 移步这里 1. JavaScript 1.1. 基础语法 包括:变量声明、数据类型、函数、控制语句、内置对象等 1.1.1. 变量声明 ES5: var //普通变量 function //函数 ES6新增: let //普通变量 const //常量 -- 声明的同时初始化,不可重新赋值,不能重复声明 import //模块 class //类 1.1.2. 数据类型 -- 类型介绍 ES5: String、Number、Boolean、Null、Undefined、Object ES6增: Symbol 其中,object为引用,其他为基本类型 基本类型 占据空间固定,是简单的数据段,将其存储在 栈 (stack)中(按值访问) 便于提升变量查询速度 为了便于操作这类数据,ECMAScript提供了 3 个 基本包装类型 :Boolean、Number 和 String 基本包装类型 一种特殊的引用类型,每当读取一个基本类型值的时候,JS内部就会创建一个对应的包装对象,从而可以调用一些方法来操作这些数据 引用类型 由于其值的大小会改变,所以不能将其存放在栈中,否则会降低变量查询速度 将其存储在 堆 (heap)中,存储在变量处的值是一个指针,指向存储对象的内存处(按址访问) 可以为其添加、改变和删除属性和方法;但基本类型不可以添加属性和方法 -- 类型判断 原始类型

e

三世轮回 提交于 2019-11-29 17:42:17
Web前端技术由 html、css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍。目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希望共勉。 一、JAVASCRIPT 篇 0、基础语法 Javascript 基础语法包括:变量声明、数据类型、函数、控制语句、内置对象等。 在ES5 中,变量声明有两种方式,分别是 var 和 function ,var 用于声明普通的变量,接收任意类型,function用于声明函数。另外,ES6 新增了 let、const、import 和 class 等四个命令,分别用以声明 普通变量、静态变量、模块 和 类 。 JS数据类型共有六种,分别是 String、Number、Boolean、Null、Undefined 和 Object 等, 另外,ES6新增了 Symbol 类型。其中,Object 是引用类型,其他的都是原始类型(Primitive Type)。 原始类型也称为基本类型或简单类型,因为其占据空间固定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈

e

不羁岁月 提交于 2019-11-29 17:41:15
Web前端技术由 html、css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍。目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希望共勉。 一、JAVASCRIPT 篇 0、基础语法 Javascript 基础语法包括:变量声明、数据类型、函数、控制语句、内置对象等。 在ES5 中,变量声明有两种方式,分别是 var 和 function ,var 用于声明普通的变量,接收任意类型,function用于声明函数。另外,ES6 新增了 let、const、import 和 class 等四个命令,分别用以声明 普通变量、静态变量、模块 和 类 。 JS数据类型共有六种,分别是 String、Number、Boolean、Null、Undefined 和 Object 等, 另外,ES6新增了 Symbol 类型。其中,Object 是引用类型,其他的都是原始类型(Primitive Type)。 原始类型也称为基本类型或简单类型,因为其占据空间固定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈

从输入一个url到页面出现内容发生了什么

断了今生、忘了曾经 提交于 2019-11-29 17:20:26
浏览器是多进程架构的,分为主进程(处理用户输入,交互等),网络进程,渲染进程(处理页面加载),GPU进程(处理图形),那么,从输入一个url到页面出现内容主要有以下几个步骤。 1. 浏览器主进程处理用户输入,并将输入传输给网络进程 当用户在导航栏上输入一串字符后,首先浏览器主进程会判断这串字符是否是合法的url地址,如果不是,就会调用搜索引擎,如果是则作相应处理,比如www.baidu.com浏览器会自动帮你把http://这个协议补充上,接着主进程就可以将这个完整的url地址发送给网络进程了。 2. 网络进程接收地址,收集到相应数据(可能来自缓存,也有可能来自服务器),并将数据传输给渲染进程 2.1 处理缓存 当拿到一个url地址后,网络进程并不会立即发送请求去访问服务器,而是先看要经历缓存。首先我们先分析有缓存的情况下,缓存分为强缓存和弱缓存,强缓存即不需要走网络,直接使用本地缓存的情况,由expires和cache-control两个响应头控制,expires保存了一个时间点,使用时将于现在这个时间点进行比对,如果大于当前时间点,则说明缓存有效,则直接使用本地缓存,cache-control和expires是类似的,cache-control控制的更为精细,并且如果同时有cache-control和expires,优先使用cache-control进行缓存判断

全面了解移动端DNS域名劫持等杂症:原理、根源、HttpDNS解决方案等

北慕城南 提交于 2019-11-29 17:13:18
https://cloud.tencent.com/developer/article/1367850 本文引用了腾讯工程师廖伟健发表于“鹅厂网事”公众号上的《【鹅厂网事】全局精确流量调度新思路-HttpDNS服务详解》一文部分内容,感谢原作者的分享。 1、引言 对于互联网,域名是访问的第一跳,而这一跳很多时候会“失足”(尤其是移动端网络),导致访问错误内容、失败连接等,让用户在互联网上畅游的爽快瞬间消失。 而对于这关键的第一跳,包括鹅厂在内的国内互联网大厂,都在持续深入地研究和思考对策,本文将就鹅厂团队在这一块的技术实践,做一个深度的总结和技术分享,希望给大家带来些许启发。 学习交流: - 即时通讯/推送技术开发交流4群: 101279154 [推荐] - 移动端IM开发入门文章:《 新手入门一篇就够:从零开发移动端IM 》 (本文同步发布于: http://www.52im.net/thread-2121-1-1.html ) 2、相关文章 《 网络编程懒人入门(一):快速理解网络通信协议(上篇) 》 《 网络编程懒人入门(二):快速理解网络通信协议(下篇) 》 《 网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门 》 《 网络编程懒人入门(七):深入浅出,全面理解HTTP协议 》 《 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

redis缓存 面试总结

喜你入骨 提交于 2019-11-29 15:19:01
缓存的收益和成本 1、缓存带来的回报 高速读写 :缓存加速读写速度:CPU L1/L2/L3 Cache、Linux page Cache加速硬盘读写、浏览器缓存、Ehcache缓存数据库结果 降低后端负载 :后端服务器通过前端缓存降低负载: 业务端使用Redis降低后端MySQL负载等 2、缓存带来的代价 数据不一致: 缓存层和数据层有时间窗口不一致,和更新策略有关 代码维护成本:原本只需要读写MySQL就能实现功能,但加入了缓存之后就要去维护缓存的数据,增加了代码复杂度。 堆内缓存可能带来内存溢出的风险影响用户进程,如ehCache、loadingCache: 堆内缓存是由jvm分配的缓存 jvm运行时数据区:堆、java虚拟机栈、方法区、本地方法栈、程序计数器 堆内缓存和远程服务器缓存redis的选择 堆内缓存一般性能更好,远程缓存需要套接字传输 用户级别缓存尽量采用远程缓存 大数据量尽量采用远程缓存,服务节点化原则 redis的特性 redis有哪些特性 丰富的数据类型 可用于缓存,消息按key设置过期时间,过期后自动删除 setex set expire时间 支持持久化方式rdb和aof 主从分布式,redis支持主从支持读写分离 redis cluster,动态扩容方式。 你用过redis的哪几种特性 用sorted Set实现过排行榜项目

1.分布式架构的来源演进

让人想犯罪 __ 提交于 2019-11-29 13:24:47
架构的本质 一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最 终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。 架构的本质就是对系统进行有序化重构,使系统不断进化 那架构是如何实现无序到有序的呢? 基本的手段就是分和合,先把系统打散,然后重新组合。 分的过程是把系统拆分为各个子系统 / 模块 / 组件,拆的时候,首先要解决每个组件的定 位问题,然后才能划分彼此的边界,实现合理的拆分。合就是根据最终要求,把各个分离的 组件有机整合在一起,相对来说,第一步的拆分更难。 拆分的结果使开发人员能够做到业务聚焦、技能聚焦,实现开发敏捷,合的结果是系统变得 柔性,可以因需而变,实现业务敏捷 架构的分类 架构一般可分业务架构、应用架构、技术架构 1. 业务架构从概念层面帮助开发人员更好的理解系统,比如业务流程、业务模块、输入输出、 业务域 2. 应用架构从逻辑层面帮助开发落地系统,如数据交互关系、应用形式、交互方式,是的整 个系统逻辑上更容易理解,步入大家熟知的 SOA 就属于应用架构的范畴 3. 技术架构主要解决技术平台选型、如操作系统、中间件、设备、多机房、水平扩展、高可 用等问题 需要注意的是,系统或者架构首先都是为人服务的,系统的有序度高,用用逻辑合理,业务 概念清晰是第一位。现在大家讨论更多的是技术架构,如高并发设计

缓存在分布式系统中的应用

余生颓废 提交于 2019-11-29 11:27:19
一、缓存概述 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 1.1缓存的原理 (1) 将数据写入/读取速度更快的存储(设备); (2) 将数据缓存到离应用最近的位置; (3) 将数据缓存到离用户最近的位置。 1.2缓存分类 在分布式系统中,缓存的应用非常广泛,从部署角度有以下几个方面的缓存应用。 (1) CDN缓存; (2) 反向代理缓存; (3) 分布式Cache; (4) 本地应用缓存; 1.3缓存媒介 常用中间件:Varnish,Ngnix,Squid,Memcache,Redis,Ehcache等; 缓存的内容:文件,数据,对象; 缓存的介质:CPU,内存(本地,分布式),磁盘(本地,分布式) 1.3缓存设计 缓存设计需要解决以下几个问题: (1) 缓存什么? 哪些数据需要缓存:1.热点数据;2.静态资源; (2) 缓存的位置? CDN,反向代理,分布式缓存服务器,本机(内存,硬盘) (3) 如何缓存的问题? 过期策略 1.固定时间:比如指定缓存的时间是30分钟; 2.相对时间:比如最近10分钟内没有访问的数据; 同步机制 实时写入;(推) 异步刷新;(推拉) 二、CDN缓存 CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等)。国内网络异常复杂

redis+mysql缓存

雨燕双飞 提交于 2019-11-29 10:58:22
redis+mysql缓存 缓存逻辑:client -> nginx -> php-fpm -> redis -> mysql 一.原理 1.为什么要作缓存 当网站的处理和访问量非常大的时候,我们的数据库的压力就变大了,数据库的连接池,数据库同时处理数据的能力就会受到很大的挑战,一旦数据库承受了其最大承受能力,网站的数据处理效率就会大打折扣。此时就要使用高并发处理、负载均衡和分布式数据库,而这些技术既花费人力,又花费资金。 2.redis缓存原理 Redis其实就是说把表中经常访问的记录放在了Redis中,然后用户查询时先去查询Redis再去查询MySQL,确实实现了读写分离,也就是Redis只做读操作。由于缓存在内存中,所以查询会很快。 如何确定在redis查询还是Mysql查询: 对于一个sql语句格式的数据请求,首先计算该语句的MD5并据此得到结果集标识符,然后利用该标识符在Redis中查找该结果集。注意,结果集中的每一行都有一个相应的键,这些键都存储在一个Redis集合结构中。如果Redis中不存在这样一个集合,说明要找的结果集不在Redis中,所以需要执行相应的sql语句,在Mysql中查询到相应的结果集,然后按照上面所说的办法把结果集中的每一行以字符串或哈希的形式存入Redis。 3.memcached和redis做缓存的区别 1.性能上: 性能上都很出色,具体到细节

Status Code状态码详解对照表

依然范特西╮ 提交于 2019-11-29 10:20:42
Status Code状态码详解对照表 状态码 含义 100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 101 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。   只有在切换新的协议更有好处的时候才应该采取类似措施。例如,切换到新的HTTP 版本比旧版本更有优势,或者切换到一个实时且同步的协议以传送利用此类特性的资源。 102 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。 200 请求已成功,请求所希望的响应头或数据体将随此响应返回。 201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 '202 Accepted'。 202 服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。   返回202状态码的响应的目的是允许服务器接受其他过程的请求