《高性能网站建设进阶指南》第95页提到:
另外一种提高性能的简单有效的方式是将循环变量递减到0,而不是递增到总长度。根据每个循环的复杂性不同,这个简单的改变可以比原来节约多达50%的执行时间。
我在这几种环境下进行了简单的测试:Node.js,Chrome,Firefox,IE。在浏览器环境下,循环变量从0增长与递减到0相比会有性能损耗;但在Node中则截然相反。
《高性能网站建设进阶指南》第95页提到:
另外一种提高性能的简单有效的方式是将循环变量递减到0,而不是递增到总长度。根据每个循环的复杂性不同,这个简单的改变可以比原来节约多达50%的执行时间。
我在这几种环境下进行了简单的测试:Node.js,Chrome,Firefox,IE。在浏览器环境下,循环变量从0增长与递减到0相比会有性能损耗;但在Node中则截然相反。
最近在学Node.js,感觉其非常强大,也很有趣。国内目前关于Node.js的书籍还不是很多,避免了选择焦虑环节,于是干脆买了几本。目前读了两本,列出来这些书,并附上自己的评价,或许对别人有帮助。
###参考资料
《Node.js入门经典》第5章
###1. 最简单的HTTP服务器
1 | var http = require('http'); |
###2. 路由控制的HTTP服务器
1 | var http = require('http'), |
HTTP是一个请求和响应协议,其设计目的是请求文件,并围绕请求文件的思想进行操作。从设计初衷上讲,它并不适用于需要服务器实时数据的应用。如即时聊天应用。这种应用需要在服务器上发生某事时向浏览器推送数据。
使用一系列HTTP序列可以近似实现从服务器获取“实时”数据的功能,例如网页邮箱。
观察QQ邮箱的网络请求情况,如下图,可以看到它大概每隔29秒多点就会向服务器发送一次请求,看看是否有新邮件。
这样会产生大量的服务器负载,因为每个请求都需要在服务器上建立和销毁,以及HTTP头和用户身份验证的网络开销;HTTP头可以给每个请求增加几百KB,在一个繁忙的服务器上,这会给服务器和网络增加相当数量的负载。
仅摘记自己陌生的、新学到的知识点。
##第1章:jQuery基础
###关于ready()方法jQuery(document).ready(function(){})
方法可以在DOM加载之后、整个页面加载之前执行JS代码。与之相比,window.onload属性则是在页面全部加载完后(包括图片、SWF等)才被触发。
所以ready()比较贴合实际。但是它也不是必须的:
这个定制的jQuery事件只有在JavaScript必须嵌入到页面顶端的文档流并封装在
<head>
元素里时才有必要。我只需将JavaScript文件包含和内联代码放在<body>
结束标签之前,就能避免使用ready()
事件。原因有二。一,现代优化技术已经断言,当JavaScript代码放在页面解析的最后由浏览器加载时,页面的加载速度就会变得更快。
二,ready()方法一定程度上增加了代码量,这样不好。代码越少,网页运行得总是越快。
最近买火车票,感觉12306网站做得实在太垃圾了——加载速度慢,使用同步的Ajax验证码,未使用CSS Spirites …… ——完全不是抱着处理大量请求、高并发去的啊。于是抽空瞥了一下网站源码,发现其前端部分是个极好的反面教材,可以作为web前端工程师进行性能优化的案例。本文仅指出12306网站前端方面存在的问题,并提出性能优化建议。鄙人水平有限,如有不对之处,还望读者朋友多多见谅,并感谢批评指正~~
另外,1月3日下午我给12306铁路客运服务的“意见反馈”邮箱发了一封邮件,也不知道他们会不会处理。更不知道会不会被……
参考资料:
HTML5 Web Storage的目的是克服cookie的一些限制:当数据需要被严格控制在客户端上时,无须持续地将数据发送回服务器。这里只初步研究一下localStorage属性。要访问同一个localStorage对象,页面必须来自同一个域名(子域名无效),使用同一种协议,在同一个端口上。
在我的博文《使用script标签在博客中跨域调用豆瓣API》中,介绍了发起跨域数据请求的最直接的方法。然后我博客下的引用了豆瓣书籍的地方都根据豆瓣API添加了书籍基本信息查询的功能。不过除了这种原生的方法,还可以使用jQuery对它们进行的封装(虽然与Ajax不是完全相同,但jQuery还是将其封装到ajax函数中去了)发起JSONP跨域请求。
原生方法很直观,适用于不采用jQuery库的网站。
参考资料:
###Node.js简介
Node.js诞生于2009年5月,创始人Ryan Dahl。
Node.js是一个划时代的技术,它在原有的Web前端和后端技术的基础上总结并提炼出了许多新的概念和方法,堪称十多年来Web开发经验的集大成者。Node.js可以作为服务器向用户提供服务,与PHP、Python、Ruby on Rails相比,它跳过了Apache、Nginx等HTTP服务器,直接面向前端开发。Node.js的许多设计理念与经典架构(如LAMP)有着很大的不同,可提供强大的伸缩能力,以适应2010年以后规模越来越庞大的互联网环境。
历史上将JavaScript移植到浏览器外的计划不止一个,但Node.js是最出色的一个。
###Node.js学习资料
另外,知名程序员兼翻译家阮一峰有一个适合Node.js初学者的页面:JavaScript标准参考教程(alpha)-Node.js概述。内容组织地非常清晰。