我的收录,你不知道的,总会在这里找到答案,本身的强大才是真的强大,但愿我写的也能够帮到你。javascript
- 1.输入域名地址
- 2.发送至DNS服务器并得到域名对应的WEB服务器IP地址;
- 3.与WEB服务器创建TCP链接;
- 4.服务器的永久重定向响应(从
http://example.com
到http://www.example.com
)- 5.浏览器跟踪重定向地址
- 6.服务器处理请求
- 7.服务器返回一个HTTP响应
- 8.浏览器显示 HTML
- 9.浏览器发送请求获取的资源(如图片、音频、视频、CSS、JS等等)
- 10.浏览器发送异步请求
这里我贴一篇不久前写的文章 在浏览器地址栏键入URL,按下回车以后会经历了那些事html
1.用户界面 、2.网络 、3.UI后端 、4.数据存储 、5.浏览器引擎 、6.渲染引擎 、7.js解释器、前端
流程:解析 html
以构建 dom
树 ->
构建 render
树->
布局 render
树->
绘制 render
树java
主要分红两部分:渲染引擎(layout engineer或Rendering Engine)
和JS引擎
。web
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,而后会输出至显示器或打印机。浏览器的内核的不一样对于网页的语法解释会有不一样,因此渲染的效果也不相同。全部网页浏览器、电子邮件客户端以及其它须要编辑、显示网络内容的应用程序都须要内核。typescript
JS引擎则:解析和执行javascript来实现网页的动态效果。最开始渲染引擎和JS引擎并无区分的很明确,后来JS引擎愈来愈独立,内核就倾向于只指渲染引擎。数据库
Trident内核
:IE,360,傲游,搜狗,世界之窗,腾讯等。[又称MSHTML]
Gecko内核
:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等Presto内核
:Opera7及以上。[Opera内核原为:Presto,现为:Blink;]
Webkit内核
:Safari,Chrome等。[ Chrome的:Blink(WebKit的分支)]
cookie
是网站为了标示用户身份而储存在用户本地终端(Client Side)
上的数据(一般通过加密),数据会在浏览器和服务器间来回传递。 sessionStorage
和localStorage
不会自动把数据发给服务器,仅在本地保存。编程
存储大小:小程序
cookie
数据大小不能超过4k
。sessionStorage
和localStorage
虽然也有存储大小的限制,但比cookie
大得多,能够达到5M
或更大。
有期时间:后端
localStorage
存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;sessionStorage
数据在当前浏览器窗口关闭后自动删除.cookie
设置的cookie过时时间以前一直有效,即便窗口或浏览器关闭
跨域问题,设置了HttpOnly
。
调用localstorge
、cookies
等本地存储方式
经过 visibilityState
的值检测页面当前是否可见,以及打开网页的时间等; 在页面被切换到其余后台进程的时候,自动暂停音乐或视频的播放
区分用户是计算机仍是人
的公共全自动程序。能够防止恶意破解密码、刷票、论坛灌水
; 有效防止黑客对某一个特定注册用户用特定程序暴力破解方式
进行不断的登录尝试。
CDN
缓存更方便 ,突破浏览器并发限制 节约cookie
带宽 ,节约主域名的链接数,优化页面响应速度 防止没必要要的安全问题
网页标准
和标准制定机构
都是为了能让 web
发展的更‘健康’,开发者遵循统一的标准,下降开发难度,开发成本,SEO
也会更好作,也不会由于滥用代码致使各类 BUG
、安全问题,最终提升网站易用性。
微格式(Microformats)
是一种让机器可读的语义化 XHTML
词汇的集合,是结构化数据的开放标准。是为特殊应用而制定的特殊格式
优势
:将智能数据添加到网页上,让网站内容在搜索引擎结果界面能够显示额外的提示。
- (1)图片懒加载,在页面上的未可视区域能够添加一个滚动条事件,判断图片位置与浏览器顶端的距离与页面的距离,若是前者小于后者,优先加载。
- (2)若是为幻灯片、相册等,可使用图片预加载技术,将当前展现图片的前一张和后一张优先下载。
- (3)若是图片过大,可使用特殊编码的图片,加载时会先加载一张压缩的特别厉害的缩略图,以提升用户体验。
- (4)若是图片展现区域小于图片的真实大小,则因在服务器端根据业务须要先行进行图片压缩,图片压缩后大小与展现一致。
能够看看这篇文章 关于前端优化的一些方案
合理的标签使用, 主要的互联网目录,连接交换和连接普遍度。
- 1.减小dom操做
- 2.部署前,图片压缩,代码压缩
- 3.优化js代码结构,减小冗余代码
- 4.减小http请求,合理设置 HTTP缓存
- 5.使用内容分发cdn加速
- 6.静态资源缓存
- 7.图片延迟加载
能够看看这篇文章 关于前端优化的一些方案
区别
:优雅降级
是从复杂的现状开始,并试图减小用户体验的供给,而渐进加强
则是从一个很是基础的,可以起做用的版本开始,并不断扩充,以适应将来环境的须要。降级(功能衰减)
意味着往回看;而渐进加强
则意味着朝前看,同时保证其根基处于安全地带。
- Adobe Flash Socket
- ActiveX HTMLFile (IE)
- 基于 multipart 编码发送 XHR
- 基于长轮询的 XHR
- 1.cookie
- 2.session
- 3.url重写
- 4.隐藏input
- 5.ip地址
- 1.一台服务器要与
HTTP1.1
兼容,只要为资源实现GET
和HEAD
方法便可。- 2.
GET
是最经常使用的方法,一般用于请求服务器
发送某个资源。- 3.
HEAD
与GET
相似,但服务器在响应中值返回首部,不返回实体的主体部分。- 4.
PUT
让服务器用请求的主体部分来建立一个由所请求的URL
命名的新文档,或者,若是那个URL
已经存在的话,就用干这个主体替代它。- 5.
POST
起初是用来向服务器输入数据的。实际上,一般会用它来支持HTML的表单。表单中填好的数据一般会被送给服务器,而后由服务器将其发送到要去的地方。- 6.
TRACE
会在目的服务器端发起一个环回诊断
,最后一站的服务器会弹回一个TRACE
响应并在响应主体中携带它收到的原始请求报文
。TRACE
方法主要用于诊断,用于验证请求是否如愿穿过了请求/响应链
。- 7.
OPTIONS
方法请求web
服务器告知其支持的各类功能。能够查询服务器支持哪些方法或者对某些特殊资源支持哪些方法。- 8.
DELETE
请求服务器删除请求URL
指定的资源。
rfc2616中进行了定义:
- 1.首行是状态行包括:HTTP版本,状态码,状态描述,后面跟一个
CRLF
- 2.首行以后是若干行响应头,包括:
通用头部,响应头部,实体头部
- 3.响应头部和响应实体之间用一个
CRLF
空行分隔
举例状态码类型:
状态码 | 类别 | 缘由短语 |
---|---|---|
1XX | Information(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 须要进行附加的操做以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器没法处理请求 |
5XX | Server Error(服务端错误状态码) | 服务器处理请求出错 |
204 | 服务器成功处理,但未返回内容。 | |
304 | Not Modified 未修改。 | 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端一般会缓存访问过的资源,经过提供一个头信息指出客户端但愿只返回在指定日期以后修改的资源 |
400 | Bad Request | 客户端请求的语法错误,服务器没法理解 |
403 | Forbidden | 服务器理解请求客户端的请求,可是拒绝执行此请求 |
404 | Not Found | 服务器没法根据客户端的请求找到资源(网页)。经过此代码,网站设计人员可设置"您所请求的资源没法找到"的个性页面 |
同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。
若是非同源,共有三种行为受到限制
- 1.
Cookie
、LocalStorage
和IndexDB
没法读取。- 2.
DOM
没法得到。- 3.
AJAX
请求不能发送。
要作好防XSS、CSRF、SQL注入攻击.DDOS攻击。
XSS概念:
译为跨站脚本攻击,具体是指攻击者在Web页面里插入恶意Script脚本,当用户浏览该网页时,Script代码会被执行,从而进行恶意攻击。
XSS预防:
关键
cookie
字段设置httpOnly
输入检查,特殊字符 < > / &等,对其进行转义后存储
CSRF概念:
本质上讲,是黑客将一个http接口中须要传递的全部参数都预测出来,而后无论以什么方式,他均可以根据他的目的来任意调用你的接口,对服务器实现CURD。
CSRF 预防:
使用验证码,更高级用图灵测试
SQL概念:
一般没有任何过滤,直接把参数存放到了SQL语句当中
SQL预防:
根本上防止
SQL
注入的方法,就是参数化查询或者作词法分析。
DDOS概念:
利用
木桶原理
,寻找利用系统应用的瓶颈;阻塞和耗尽;当前问题:用户的带宽小于攻击的规模,噪声访问带宽成为木桶的短板。DDOS预防:用软硬件结合的方式来防护是最有效的
- 1.开发规范
- 2.模块化开发
- 3.组件化开发
- 4.组件仓库
- 5.性能优化
- 6.项目部署
- 7.开发流程
- 8.开发工具
AMD
和 CMD
是二种模块定义规范。如今都使用模块化编程,AMD,异步模块定义
;CMD,通用模块定义
。AMD依赖前置,CMD依赖就近。CMD的 API
职责单一,没有全局require
,AMD的一个API
能够多用。
mvc是模型(model)-视图(view)-控制器(controller)
的缩写,一种软件设计典范使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可使用不一样的表现形式。MVC对应Html,CSS,js。
BFC全称”Block Formatting Context”
, 中文为“块级格式化上下文
”。流体特性:块状水平元素,如div元素(下同),在默认状况下(非浮动、绝对定位等),水平方向会自动填满外部的容器;BFC元素特性表现原则就是,内部子元素不会影响外部的元素
。
期待的解决方案包括:文件合并文件最小化/文件压缩使用CDN托管缓存的使用(多个域名来提供缓存)其余。
- 1.应用字符集的选择,选择UTF-8编码
- 2.语言书写习惯&导航结构
- 3.数据库驱动型网站
所谓的标准字体是多数机器上都会有的,或者即便没有也能够由默认字体替代的字体。 方法:
- 用图片代替
- web fonts在线字库,如
Google Webfonts,Typekit
等等;www.chinaz.com/free/20...;@font-face
,Webfonts(字体服务例如:Google Webfonts,Typekit等等。)
- (1)了解背景知识:历史、现状、特色、应用领域、发展趋势
- (2)搭建开发环境,编写HelloWorld
- (3)声明变量和常量
- (4)数据类型
- (5)运算符
- (6)逻辑结构
- (7)通用小程序
- (8)函数和对象
- (9)第三方库、组件、框架
- (10)实用项目
散列表(也叫哈希表)
,是根据关键码值直接进行访问的数据结构。也就是说,它经过把关键码值
映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫作散列函数,存放记录的数组叫作散列表
。
静态:
网页内容任何人在任什么时候间访问都是不变的
动态:
网页内容不一样人在不一样时间访问多是不一样的
- DDL:数据定义语句
CREATE/DROP/ALTER…
- DCL:数据控制语句
GRANT…
- DML:操做操做语句
INSERT/UPDATE/DELETE
- DQL:查询语句
SELECT
解决某元素中“子元素
”的布局方式,为布局提供最大的灵活性。
设为 flex
布局之后,子元素的 float、clear
和vertical-align
属性将失效!!!
display:flex
; 属性align-self
定义子元素的位置。
- 1.声明viewport元标签
- 2.使用流式布局
- 3.全部容器使用相对尺寸,不用绝对尺寸
- 4.(最重要原则)使用CSS3 Media Query技术
- 1.不一样浏览器的标签默认的内.外补丁不一样。*{margin:0;padding:0;}
- 2.图片默认有间距使用float属性为img布局
- 3.居中问题(而FF默认为左对齐)
margin: 0 auto;
- 4.CSS 兼容前缀
-ms- IE
、-moz- Firefox
、-o- Opera
、-webkit- Chrome
、- 5.使用CSS Hack 如:
+:IE6,7的前缀
、-:IE6的前缀
- (1)
Canvas绘图
- (2)
SVG绘图
- (3)
地理定位
- (4)
Web Worker
web worker
是运行在后台的 JS,独立于其余脚本,不会影响页面的性能。
- (5)
Web Storage
- (6)
Web Socket
- 1.复杂的选择器
- 2.弹性布局
- 3.动画
- 1.它是JavaScript的一个超集,并且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。
- 2.
TypeScript
扩展了JavaScript的语法,因此任何现有的JavaScript程序能够不加改变的在TypeScript下工做。TypeScript
是为大型应用之开发而设计,而编译时它产生 JavaScript 以确保兼容性。
- Angular带有比较强的排它性的
- React主张是函数式编程的理念,侵入性没有Angular那么强,主要由于它是软性侵入。
- Vue 渐进式的
**优势:**用户体验好 、良好的先后端分离。
缺点:
- 1.不利于SEO。
- 2.初次加载耗时相对增多。
- 3.导航不可用,若是必定要导航须要自行实现前进、后退。
每一个模块内部,module
变量表明当前模块。
这个变量是一个对象,它的exports
属性(即module.exports
)是对外的接口。加载某个模块,实际上是加载该模块的module.exports
属性。
- 1.使用 CDN
- 2.图片懒加载
- 3.使用外部 JavaScript 和 CSS
- 4.压缩 JavaScript 、 CSS 、字体、图片等
- 5.优化 CSS Sprite
- 6.减小 HTTP 请求数
- 7.减小 DNS 查询
- 8.减小 DOM 元素数量
- 9.减小 DOM 操做
- 10.把脚本放在页面底部 能够看看这篇文章 关于前端优化的一些方案
- HTTP是一个客户端和服务器端请求和应答的标准
(TCP)
。HTTP1.1
和2.0
协议的区别:HTTP1.1
不支持header
数据的压缩,而2.0
支持
若有不足的地方,欢迎指出来,请不要喷我,若是你是大佬,请添加更多的有关问题帮助菜鸟学习,做为一个菜鸟我知道大佬不少,可是菜鸟更多,看到了,学到了就是本身的。欢迎留言,我回及时回复。