HICK 者,乡巴佬也

High Performance Web Sites 读书笔记3

Posted in: Web 开发 — Hick @ 2008/02/28 8:41:02 Comments (2)

http://www.hickwu.com/?p=228

尽量避免使用 CSS 表达式

CSS 表达式可以根据条件来动态的设置 css 的属性,IE 5 以及以后版本都支持 css 表达式。表达式部分就是 js 代码。

background-color: expression( (new Date()).getHours( )%2 ? "#B8D4FF" : "#F08A00" );

其他浏览器可能会忽略该功能,但是 IE 浏览器是支持的。利用这个特性可以用来解决一些其他浏览器支持但是 ie 不支持的特性。比如 ie 不支持的 min-width 属性,可以通过这样的表达式在 ie 下实现:

width: expression( document.body.clientWidth < 600 ? "600px" : "auto" );
min-width: 600px;

css 一个表达式可能并不怎么消耗资源,但是他们的执行次数往往会比人们预想的多,比如包括拖动滚动条,甚至是移动鼠标都可能导致一个 css 表达式反复执行。虽然写得好可以避免这样的情况,但是到了这个层次很多东西不好把握了,所以一般建议尽量避免使用 css 表达式。

使用外部 js 和 css 样式

其实单纯的就一个页面来说,把 js 和 css 放在一个文件中,和使用外部 js 和 css 文件相比,还是要快的。尽管使用多个文件可以利用到浏览器的并行下载,但是多次请求的开销,导致 js 和 css 放在一个文件中要快。但是一般来说,css 和 js 都是很多页面可以公用的,或者用户习惯是一天或者一个月内多次访问到同一个页面,这些文件一般都是可以直接从浏览器 cache 中取的。因此并不是绝对的说一定使用外部 js 和 css ,而是在可 Cache 的情况下使用。对书中说的”Empty cache vs. primed cache”还不是完全明白,另外提到的 Dynamic Inlining 个人感觉没有必要搞得怎么复杂,可能得不偿失。

DNS 解析

一般来说,操作系统和浏览器把域名解析为 ip 地址以后,都会丢这个解析做 cache ,也就是在一定时间内,该域名会一直被解析为该 ip ,而不管对应的 ip 是否变化或者还绑定了其他 ip 。尽管如此,浏览器通常都会忽略操作系统的 dns cache 。而 Keep-Live 情况下,实际上只有一个连,无论是否 cache 都不会有多次的 dns 解析。

介绍了 TTL: ping 命令可以看到的 TTL 的意思是 Time To Live, 也就是 dns server 告诉请求解析的 client 某域名的解析可以被 cache 的时间。

说明一下,之前我接触该过的清 dns cache 的命令 ipconfig /flushdns 清除的只是操作系统的 dns cache ,对浏览器并不一定有效。浏览器通常是关闭进程以后会自动清楚 dns cache 。

(more…)

High Performance Web Sites 读书笔记2

Posted in: Web 开发 — Hick @ 2008/02/27 8:43:06 Comments (0)

http://www.hickwu.com/?p=223

使用 CDN

CDN: Content Delivery Network ,内容分发网络。由于网络的差异性,尤其是我国南北电信网通的差异,网络速度容易成为用户访问慢的因素。而 CDN 提供商则会通过在不通的网络环境做镜像来解决网络的差异性,尽量使各种网络环境下的用户能够流畅的拉取页面。需要注意的是,CDN 基本上只用来分发静态内容。

文章中只大概列举了使用 CDN 的大网站的情况以及美国提供 CDN 的服务商,没有太多价值,但是 CDN 这个概念,对不少 web 开发者来说确实比较陌生。

指定页面过期时间

http 协议中允许指定 Expires 来说明某个文件的过期时间。当一个浏览器跟服务器请求到一个文件以后,在该文件过期之前,它可以无需跟浏览器请求而直接使用浏览器自己请求过的该文件的 cache(浏览器自己的 cache) 。所以,对浏览器可能多次请求的文件指定过期时间,能够有效减少浏览器对服务器的请求。一般需要考察用户的浏览器习惯等因素。

Expires 是指定文件具体的过期时间,在 http 1.0 中引入了一个可以覆盖该 Expires 的 Cache-Control 头的 max-age ,可以指定文件的有效秒数。不过使用 apache 的 mod_expires 可以直接根据文件创建或其他时间加一定长度的时间达到同样的目的。

(more…)

Backstreet Boys

Posted in: 享受旋律 — Hick @ 2008/02/01 12:29:11 Comments (0)

非技术相关内容停止更新,转到 QQ空间

BSB

在我的视野和认知范围内,以平均单曲质量来说, Daniel Bedingfield 的 If You’re Not The One、Never Gonna Leave Your Side、Nothing Hurts Like Love,Limp Bizkit 的一首 Behind Blue Eyes 我最喜欢。以绝对数量论,中文歌手里我最喜欢的是比曾经的我口齿稍微清晰点的周杰伦同学——尽管大学毕业后才开始不那么厌恶他——其实喜欢也就那么回事,没有绝对的讨厌和喜欢。而英文歌手(团体也算)里,最喜欢的是 Backstreet Boys 。实际情况说明,一方面本人的口味还是比较大众化的,另外一方面本人是越活越年轻了。也再次证明,Hick 同学某些方面还可以算是正常的。

没有必要为了保持神秘而很刻意的不去经历,也没有必要为了打破神秘而刻意去经历。有些东西,保持那份神秘感,它可以美丽一辈子!现在没打算,当然也不担保以后不会,去找 Limp Bizkit 的其他歌曲,也许有这曲就够了。那时候幽灵同学缠着我请她吃 pizza 前我就说过:我也没有吃过 pizza,但是感觉它好吃;不吃,可能总会觉得它好吃。结果我就不说了,嘿嘿。生活也是如此,人生需要的不只是经历——至少,我的人生如此——也许我需要的是精致,我保留某些经历的权利。即使是如某人说的那样,只能精致三十载。可能正是这样,才能够解释在北京混迹多年,故宫长城天安门之类,我都视而不见,到过长城的好汉没什么好稀罕的——很奇怪,这也需要解释?嘿嘿

看多了丑陋,会感觉世界如此污秽,足以让人窒息。也许会有我放弃原则的那天,我只能够肯定不是今天。

(more…)