13. DNS
!
; <<>> DiG 9.8.3-P1 <<>> +trace www.baidu.com @8.8.8.8
;; global options: +cmd
. 18409 IN NS j.root-servers.net.
. 18409 IN NS b.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 127 ms
!
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
;; Received 491 bytes from 202.12.27.33#53(202.12.27.33) in 318 ms
!
baidu.com. 172800 IN NS dns.baidu.com.
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
;; Received 201 bytes from 192.31.80.30#53(192.31.80.30) in 409 ms
!
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
a.shifen.com. 1200 IN NS ns5.a.shifen.com.
a.shifen.com. 1200 IN NS ns4.a.shifen.com.
a.shifen.com. 1200 IN NS ns3.a.shifen.com.
a.shifen.com. 1200 IN NS ns2.a.shifen.com.
a.shifen.com. 1200 IN NS ns1.a.shifen.com.
;; Received 228 bytes from 220.181.37.10#53(220.181.37.10) in 30 ms
42. PreloadScanner
<!—— GOOD ——>
<script src=“large.js”></script>
<script src=“ad.js” async></script>
!
<!—— BAD ——>
<script src=“large.js”></script>
<script>
var s = document.createElement(‘script’);
s.src = “ad.js”;
document.head.appendChild(s);
</script>
43. 书写⾼高效的 CSS selectors
• Avoid a universal key selector.
• Make your rules as specific as possible.
• Remove redundant qualifiers.
• Avoid using descendant selectors, especially
those that specify redundant ancestors.
• Use class selectors instead of descendant
selectors.
https://developers.google.com/speed/docs/best-practices/rendering#UseEfficientCSSSelectors
71. with statement
function containsWith() {
return 3;
with({}) {}
}
!
containsWith();
%OptimizeFunctionOnNextCall(containsWith);
containsWith();
var status = %GetOptimizationStatus(containsWith);
console.log(status === 2);
72. debugger
var DEBUG = false;
function main() {
if (DEBUG) {
debugger;
}
require(“./biz1”);
require(“./biz2”);
require(“./biz3”);
require(“./biz4”);
}
var DEBUG = false;
function main() {
require(“./biz1”);
require(“./biz2”);
require(“./biz3”);
require(“./biz4”);
}
73. arguments
function fn1(a, b) {
b = b || 10;
return a + b;
}
!
function fn2() {
var args = [].slice.call(
arguments);
}
function fn3(a, opt_b) {
var b = opt_b || 10;
return a + b;
}
!
function fn4() {
var args = [];
for(var i = 0;
i < arguments.length;
i ++ ){
args[i] = arguments[i];
}
}
74. for-in
function nonLocalKey1() {
var obj = {}
for(var key in obj);
return function() {
return key;
};
}
!
var key;
function nonLocalKey2() {
var obj = {}
for(key in obj);
}
function nonLocalKey3() {
var obj = {}
for(var key in obj);
}
75. 数据的渲染
• HTML & CSS
• 没有什么特殊注意的内容
• 控制代码的体积,选择合理的HTML结构
• JavaScript Engine
• JS引擎的性能越来越好
• Make it happy!