web前端综合问题
1. 讲讲输完网址按下回车,到看到网页这个过程中发生了什么?
- 域名解析
- 发起TCP的3次握手
- 建立TCP连接后发起http请求
- 服务器端相应http请求,浏览器得到html代码
- 浏览器解析html代码,并请求html代码中的资源
- 浏览器对页面进行渲染呈现给用户
2. 谈谈你对前端性能优化的理解
- 请求数量: 合并脚本和样式表,CSS Sprites,拆分初始化负载,划分主域
- 请求带宽: 开启GZip,精简JavaScript,移除重复脚本,图像优化,将icon做成字体
- 缓存利用: 使用CDN,使用外部JavaScript和CSS,添加Expires头,减少DNS查找,配置ETag,使Ajax可缓存
- 页面结构: 将样式放在顶部,将脚本放在底部,尽早刷新文档的输出
- 代码校验: 避免css表达式,避免重定向
雅虎十四条
- 减少HTTP请求
- 使用CDN(content Delivery Network)内容分发网络
- 增加Expires Header
- 首次访问面临多次http请求,通过设置Expires Header,可以在客户端缓存这些元素(图像,脚本,样式表等)
- 压缩页面元素
- web客户端请求在http请求中通过Accept-encoding头来表明支持的压缩类型
- 把样式表放在头上
- 把脚本放在底部
- 避免css表达式
- 把JavaScript和CSS文件放在外部文件中
- 减少DNS查询次数
- 最小化JavaScript代码
- 避免重定向
- 删除重复的脚本文件
- 配置ETags
- Etag实体标签,是服务器告诉浏览器缓存,缓存中的内容是否已将发生变化的一种机制,需不需要重新下载
- 缓存ajax
3. 前端MC*框架的意义
- 早期的前端开发比较简单,基本是以页面为工作单元,内容以浏览为主,也偶有简单的表单操作,基本不太需要框架
- ajax技术的出现,web2.0兴起,人们在页面上可以做更复杂的事情了,然后前端框架才真正出现。
- 页面型产品,多数不太需要,因为页面的js代码处理交互的绝对远远超过模型的,但是如果是应用软件类产品,这就太需要了。长期做某个行业软件的公司一般都会沉淀下来一些业务组件,主要体现在数据模型,业务规则和业务流程,这些组建基本都存在于后端,在前端很少有相应的组织。
- 从协作关系上讲,很多前端开发团队,是因为Model部分代码较少,View的相对较多一些,如果主要在操作View和Controller,那当然是jQuery比较好用了。