美文网首页
常见问答

常见问答

作者: 约翰码农 | 来源:发表于2017-08-17 23:32 被阅读27次

一、请说出几种优化前端性能的方法。(加载时间指感知的时间或者实际加载时间)

1. 减少HTTP请求次数

尽量合并图片、CSS、JS。比如加载一个页面,如果有5个css文件的话,那么会发出5次http请求,这样会让用户第一次访问你的页面的时候会长时间等待。而如果把这个5个文件合成一个的话,就只需要发出一次http请求,节省网络请求时间,加快页面的加载。

2. 使用CDN

网站上静态资源即css、js全都使用cdn分发,图片亦然。

3. 避免空的src和href

当link标签的href属性为空、script标签的src属性为空的时候,浏览器渲染的时候会把当前页面的URL作为它们的属性值,从而把页面的内容加载进来作为它们的值。所以要避免犯这样的疏忽。

4. 为文件头指定Expires

Exipres是用来设置文件的过期时间的,一般对css、js、图片资源有效。  他可以使内容具有缓存性,这样下回再访问同样的资源时就通过浏览器缓存区读取,不需要再发出http请求。如下例子:

<img src="https://pic1.zhimg.com/bfa4b58630eec8492318aa88cbb23378_b.png" data-rawwidth="1266" data-rawheight="160" class="origin_image zh-lightbox-thumb" width="1266" data-original="https://pic1.zhimg.com/bfa4b58630eec8492318aa88cbb23378_r.png">新浪微博的这个css文件的Expires时间是2016-5-04 09:14:14.

新浪微博的这个css文件的Expires时间是2016-5-04 09:14:14.

5. 使用gzip压缩内容

gzip能够压缩任何一个文本类型的响应,包括html,xml,json。大大缩小请求返回的数据量。

6. 把CSS放到顶部

网页上的资源加载时从上网下顺序加载的,所以css放在页面的顶部能够优先渲染页面,让用户感觉页面加载很快。

7. 把JS放到底部

加载js时会对后续的资源造成阻塞,必须得等js加载完才去加载后续的文件 ,所以就把js放在页面底部最后加载。

8. 避免使用CSS表达式

举个css表达式的例子

font-color: expression( (new Date()).getHours()%3 ? “#FFFFFF" : “#AAAAAA" );

这个表达式会持续的在页面上计算样式,影响页面的性能。并且css表达式只被IE支持。

9. 将CSS和JS放到外部文件中

目的是缓存文件,可以参考原则4。 但有时候为了减少请求,也会直接写到页面里,需根据PV和IP的比例权衡。

10. 权衡DNS查找次数

减少主机名可以节省响应时间。但同时,需要注意,减少主机会减少页面中并行下载的数量。

IE浏览器在同一时刻只能从同一域名下载两个文件。当在一个页面显示多张图片时,IE 用户的图片下载速度就会受到影响。所以新浪会搞N个二级域名来放图片。

下面是新浪微博的图片域名,我们可以看到他有多个域名,这样可以保证这些不同域名能够同时去下载图片,而不用排队。不过如果当使用的域名过多时,响应时间就会慢,因为不用响应域名时间不一致。

<img src="https://pic3.zhimg.com/1b3b00a1c147fc9211b6a90d55788a22_b.png" data-rawwidth="599" data-rawheight="62" class="origin_image zh-lightbox-thumb" width="599" data-original="https://pic3.zhimg.com/1b3b00a1c147fc9211b6a90d55788a22_r.png">

11. 精简CSS和JS

这里就涉及到css和js的压缩了。比如下面的新浪的一个css文件,把空格回车全部去掉,减少文件的大小。现在的压缩工具有很多,基本主流的前端构建工具都能进行css和js文件的压缩,如grunt,glup等。

12. 避免跳转

二、请描述一下cookies,sessionStorage和localStorage的区别?

sessionStorage和localStorage是HTML5 Web Storage API提供的,可以方便的在web请求之间保存数据。

有了本地数据,就可以避免数据在浏览器和服务器间不必要地来回传递。

sessionStorage、localStorage、cookie都是在浏览器端存储的数据,其中sessionStorage的概念很特别,引入了一个“浏览器窗口”的概念。

sessionStorage是在同源的同窗口(或tab)中,始终存在的数据。也就是说只要这个浏览器窗口没有关闭,即使刷新页面或进入同源另一页面,数据仍然存在。

关闭窗口后,sessionStorage即被销毁。同时“独立”打开的不同窗口,即使是同一页面,sessionStorage对象也是不同的cookies会发送到服务器端。其余两个不会。Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。

三、javascript中的MVVM开发模式 是什么

它是MVC模式的衍生物,MVVM模式的关注点在能够支持事件驱动的UI开发平台

大部分都是通过在view层声明数据绑定来和其他层分离的,这样就方便了前端开发人员和后端开发人员 的分工,前端开发人员在html标签中写对viewmodel的绑定数据,model和viewmodel是后端开发人员通过开发应用的逻辑来维护这两层。

优点:

MVVM使并行开发更加容易,使前端开发和后端开发人员互不影响。

抽象化View层,减少了代码中的业务逻辑

ViewModel比事件驱动更容易测试

ViewModel的测试不用关心uI的自动化和交互

相关文章

  • D+ 常见问答

    D+ 常见问答 D+常见问答

  • 常见问答

    一、请说出几种优化前端性能的方法。(加载时间指感知的时间或者实际加载时间) 1. 减少HTTP请求次数 尽量合并图...

  • 体态常见问答

    hi!对我们课程感兴趣是吗?体型体态有什么想提升的?身体有什么不舒服? A:减肥 B:塑形,锻炼 C:矫正体态问题...

  • Word常见问答

    请问如何在屏幕左侧显示目录索引?答:视图——显示——勾选导航窗格 请问如何调出纸张最上方的标尺工具答:视图——显示...

  • 常见问答(FAQ)

    问题 用户对于网站本身或展示的主题内容有疑问。 解决方案 新建一个"常见问答"(FAQ)页面并提供简单的答案。 何...

  • AMC常见问答

    问1:我不太了解美国数学竞赛(AMC)。他们是什么? 答:MAA的美国数学竞赛的任务是增加学生对数学的兴趣,并通过...

  • NLP 学习 - 5常见应用2

    一、常见应用 1.问答系统 (QA) 问答系统的目的是直接提供用户的答案 二问答系统和检索系统的区别:检索系统返回...

  • iOS常见知识问答

    iOS常见知识问答 from http://wintelsui.github.io/pages/WTBlogs/h...

  • Redis MS 常见问答

    1. 什么是缓存雪崩?怎么解决? 通常,我们会使用缓存用于缓冲对 DB 的冲击,如果缓存宕机,所有请求将直接打在 ...

  • IPFS挖矿常见问答

    1、Filecoin主网什么时候上线? 本来原计划是今年6月,现在圈内又传预估9月份上线,具体的上线日期仍是待定状...

网友评论

      本文标题:常见问答

      本文链接:https://www.haomeiwen.com/subject/klhorxtx.html