Archive for 12月, 2008

ThinkPHP 框架的 PATHINFO 模式对站点性能的影响

星期二, 12月 30th, 2008

最近在做的是一个基于 ThinkPHP 框架的webgame项目。在做性能优化的时候,发现 ThinkPHP 框架中 URL 的 PATHINFO 模式对性能有些不好的影响。

首先看看 ThinkPHP 的默认配置注1

URL_MODEL=1
URL模式: 0 普通模式 1 PATHINFO 2 REWRITE
默认为PATHINFO 模式,提供最好的用户体验和SEO支持
PATH_MODEL=2
// PATHINFO 模式
// 普通模式1 参数没有顺序/m/module/a/action/id/1
// 智能模式2 自动识别模块和操作/module/action/id/1/ 或者 /module,action,id,1/...
默认采用智能模式

把URL参数以斜杠分隔,这样 URL 看起来就比较友好,不管是对人(用户)还是对蜘蛛(机器人)都是。但在处理这种模式下的 URL 参数时,ThinkPHP 却做了影响性能的行为。在这种模式下,如果浏览器的 GET 参数是以常规的方式来传递(即参数以&分隔),ThinkPHP 在处理 URL 是时候,会把这样的参数重新拼成以斜杠分隔的“规范”的形式,然后向浏览器发一个重定向的响应头,让浏览器重新用“规范”的URL形式来请求。而重定向在高性能网站设计中是比较忌讳的,因为增加了浏览器向服务器提交请求的次数,也就增加了前端加载的时间,同时还会增加服务器的负载。这对于设计高性能的站点来说,是个不利的因素。注2

(更多...)

jQuery中ajax方法的改进

星期六, 12月 27th, 2008

前些日子在做一个用 ajax 异步加载文件的预加载组件,系统以 jQuery 为基础,将页面要用到的组件,例如静态js,css,html 等文本类型的文件和图片、flash 等二进制类型的数据,加载到浏览器缓存中。这里遇到一个问题。

(更多...)

2008年终总结

星期三, 12月 24th, 2008

根据《程序员修炼之道》的建议,今年收获很多,嗯。

一直坚持使用 Ubuntu Linux 作为操作系统,坚持使用 Vim 作为主要开发的编辑器。经过一年的实践,对 Linux 的认识又有所提高,对 Vim 编辑器已经比较熟练。在 Linux 平台上作开发,效率比在 Win 平台上高出很多,主要是因为强大的开源工具集。

年初,读了《Learning Perl》,对 Perl 语言进行了初步的学习,之后写了几个小脚本,主要用于自动化方面,例如解析 CSV 文件、Excel 文档,自动处理电子邮件,以及系统管理等,并在实践中有所提高。对 Perl 的学习,是我走向 LAMP 的导火线。

由于目前国内 Java 和企业级开发环境的恶劣1,以及自身兴趣所在,决定转向 LAMP 方向。

利用出差那段时间的空闲,读了《PHP5 权威编程》,并接触了 WordPress。因为我的 Linux 和编程基础较好,所以转向 LAMP 的路很通畅。目前在一家互联网公司做 WebGame 的开发。

今年还读了不少好书,包括《精通正则表达式》、《JavaScript 权威指南》、《构建可扩展的Web站点》、《高性能网站建设指南》、《时间管理——给系统管理员》等等。

由于结合了 Web 方面的开发实践,效果很好。对 Web 站点的建设,有个最佳实践作为指导,对前端优化,也有个最佳实践作为指南,在实际开发中项目受益和个人收获都很大。尤其是对 Javascript 的深入学习和实践,理解并掌握了最核心的闭包、函数作用域链和函数调用对象的概念2。同时,掌握了命名空间,模块化开发等较高级的 Javascript 技巧。在 LAMP 开发过程中,也逐步认识到了开发符合标准 HTML/XHTML,CSS 的好处。

在项目开发中,对时间管理的概念有了初步的认识,并结合项目管理,体会到了注重时效3的重要性。

(更多...)

CSS+DIV不是标准布局

星期日, 12月 21st, 2008

CSS+DIV不是标准布局。

标准倡导的是用有意义的标签,而不是div这种无意义的标签的滥用。

其实tabel和div都是标准HTML的标签,按照标准的建议,应该将table用在数据表格展现的地方,也只有用table才能最好地展现表格数据。如果用div来表现表格数据,那将和用table来做页面布局一样,使web页面设计陷入标签和内容不统一的局面。这不是标准所建议的。

国内最近一两年一直高呼div+css,其实会对大家造成一种误导,让大家对标准产生误解。

再强调一下,css+div并不是web的一切,就像table一样。我们应该使用有意义的标签,和内容统一的标签,这才是符合标准的精神。

用有意义的标签加CSS的布局才是最佳的布局。

评论《程序员修炼之道:从小工到专家》

星期二, 12月 9th, 2008

《程序员修炼之道》

如果自己开公司给员工培训的话,朋友的观点是要给程序员培训算法。

我认为第一个要讲的就是这本书的内容,第二个就是时间管理。其实在程序员修炼之道里,就有很多关于时间管理的内容,它们是相互补充的。比如程序员的美德——懒惰,就是要提高效率,就是要节约时间。

为什么不是培训算法呢?
我的理由大概是这样的:

1、作为程序员,算法思想应该是基础,算法经验应该是在实践中培养。如果连基本的算法都不懂,他不会通过初面的。
2、如果我开公司,应该是做高层应用,这方面,一般是用OO思想来设计,大部分用到的算法都封装好了,要自己写算法的机会不多。更重要的,应该是程序员的效率,包括运用各种自动化和高效的工具。当然,这里的程序员是符合第一点的。
3、至于高深的算法,我想我自己更应该先去接受培训。

(更多...)