Web
未读content方面
减少HTTP请求:合并文件、CSS精灵、inline Image
减少DNS查询:DNS缓存、将资源分布到恰当数量的主机名
减少DOM元素数量
Server方面
使用CDN
配置ETag
对组件使用Gzip压缩
Cookie方面
减小cookie大小
css方面
将样式表放到页面顶部
不使用CSS表达式
使用<link>不使用@import
##Javascript方面
将脚本放到页面底部
将javascript和css从外部引入
压缩javascript和css
删除不需要的脚本
减少DOM访问
图片方面
优化图片:根据实际颜色需要选择色深、压缩
优化css精灵
不要在HTML中拉伸图片
vue-router 之 keep-alive
keep-alive 简介
keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。
用法也很简单:
12345<keep-alive> <component> <!-- 该组件将被缓存! --> </component></keep-alive>
props
include - 字符串或正则表达,只有匹配的组件会被缓存
exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存
1234567// 组件 aexport default { name: 'a', data () { return {} }}
12345<keep-alive include="a"> <component> <!-- name 为 a 的组件将被缓存! --> </componen ...
简易版
浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求;
服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、JS、CSS、图象等);
浏览器对加载到的资源(HTML、JS、CSS等)进行语法解析,建立相应的内部数据结构(如HTML的DOM);
载入解析到的资源文件,渲染页面,完成。
详细版
在浏览器地址栏输入url
浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤
如果资源未缓存,发起新请求
如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进行验证
检验新鲜通常有两个http头进行空值Expires和cache-control:
HTTP1.0提供Expires,值为一个绝对时间表示缓存新鲜日期
HTTP1.1增加了Cache-Control:max-age=,值为秒为单位的最大新鲜时间
浏览器解析URL获取协议,主机,端口,path
浏览器组装一个HTTP(GET)请求报文
浏览器获取主机IP地址,过程如下:
浏览器缓存
本机缓存
hosts文件
路由器缓存
ISP DNS缓存
DNS递归查询
...
如果你像我一样乐于见到整洁的代码,那么你会尽可能地减少代码中的条件语句。通常情况下,面向对象编程让我们得以避免条件式,并代之以继承和多态。我认为我们应当尽可能地遵循这些原则。
正如我在另一篇文章 JavaScript 整洁代码的最佳实践里提到的,你写的代码不单单是给机器看的,还是给“未来的自己”以及“其他人”看的。
从另一方面来说,由于各式各样的原因,可能我们的代码最终还是会有条件式。也许是修复 bug 的时间很紧,也许是不使用条件语句会对我们的代码库造成大的改动,等等。本文将会解决这些问题,同时帮助你组织所用的条件语句。
技巧
以下是关于如何构造 if…else 语句以及如何用更少的代码实现更多功能的技巧。阅读愉快!
1. 要事第一。小细节,但很重要
不要使用否定条件式(这可能会让人感到疑惑)。同时,使用条件式简写来表示 boolean 值。这个无须再强调了,尤其是否定条件式,这不符合正常的思维方式。
不好的:
1234567891011const isEmailNotVerified = (email) => { // 实现}if (!isEmail ...
拆解JavaScript中的异步模式
作者:zhangwang
链接:https://zhuanlan.zhihu.com/p/67815990
JavaScript 中有很多种异步编程的方式。callback、promise、generator、async await 甚至RxJS。我最初接触不同的异步模式时,曾想当然的觉得 promise 就是比 callback 好, async await 比就是比 promise 优雅,会把它们割裂起来看待。后来发现也不完全这样,各种异步模式之间其实存在着关联,也有着各自擅长的场景。
这段时间看了很多异步相关的资料(见文后的参考文献),觉得对 JS 中的异步有了全新的认识,写作本文已做梳理。
本文的写作目的是建立起各种异步模式之间的联系,梳理各种异步模式的优缺点,针对各种异步模式具体的用法,本文不做赘述,不过会给出一些个人觉得比较好的参考资料;
1. JavaScript 中的各种异步模式
1.1 Callback
我们知道在 JavaScript 中,函数是一等公民,当一个函数传入另外一个函数当作参数时,我们就可以把这个函数叫做 Call ...