欢 迎 访 问 卢 昌 海 个 人 主 页

除了自己的无知,
我什么都不懂。

-苏格拉底

 
信 息
 
 
 
已发表作品列表
站长简介 | 常见问题
版权说明 | 电子信箱
 
统 计
 
 
 
自 2008-02-01 以来
本文点击数
8,916
自 2008-02-01 以来
本站点击数
16,170,996
昨日点击数 4,542
今日点击数 3,328

主页改版说明 (兼论互联网标准)

- 卢昌海 -

本站自二零零二年改版至今已有五年半的时间。 虽说设计第三版 (这里保留了 version 3.0 首页的最后形象) 时作了一些努力, 试图让该版 “千秋万载” (但绝无 “一统江湖” 的野心:-)。 但实际上, 网页的设计仍存在诸多的缺陷。

这其中缺陷之一就是采用了 frameset。 这也是前三个版本的共同缺陷, 所相差者只是具体的结构: version 1.0 采用的是 “左-中-右” 结构, version 2.0 是 “左-右上-右下” 结构, 而 version 3.0 则是 “左-右” 结构。 Frameset 的问题很多, 对本站来说, 最主要的问题有这样两个:

  1. 无法让读者保存内部页面的链接 (保存下来的只是首页)。
  2. 读者通过搜索引擎提供的链接进入本站时, 将直接进入 frameset 的内容部分, 而无法看到目录, 从而不易进一步浏览本站。

虽说上述问题并不足以难倒有经验的读者, 但对无经验的大多数, 它们足以带来可观的负面影响。 除这两个问题外, frameset 还存在其它一些问题。 有鉴于此, 互联网的两大主流标准 HTML 和 XHTML (下文将会叙述) 均已将之排除在了未来版本之外 (无奈之下, W3C 只能为爹不疼妈不爱的 frameset 制定单独的标准, 叫做 XFrames)。

前三个版本的另一个共同缺陷, 是它们都由纯粹的 HTML 页面所组成 (后来所建的繁星客栈是唯一例外)。 当初之所以作那样的选择, 首先是因为那时我对 HTML/JavaScript 以外的其它 Web 编程技术并不熟悉; 其次则是由于对 PHP 等技术缺乏信心, 担心网络服务商对它们的支持度不高, 担心它们的标准不稳定, 同时也担心由它们写成的网页不被搜索引擎有效收录。 当然, 归根到底还是因为不熟悉。 但这些年下来, 上述顾虑早已不复存在。 相反, PHP 等技术所具有的优势却变得显而易见。 因此我久已有改版的想法, 只是由于经过这些年的积累, 网站上的文章数量已达几百, 改版的工作量太大, 才一拖再拖。 但文章数量就象熵一样, 是恒增加的, 此事越拖显然难度只会越大。 因此自二零零八年一月二十一日开始, 我决定开始设计新版。

此次改版的主要改动在于程序结构, 在界面方面则延续了 version 3.0 的简单风格, 甚至做得比 version 3.0 更为彻底, 不再采用任何图片 (包括那个让不少网友抱怨伤眼睛的背景星云)。 不过另一方面, 文章中的插图将大都保留, 且还可能新增, 或将当年因网站空间局促而被迫缩小的某些图片换成大图。

我在 version 3.0 的设计中首次对互联网的标准给予了一定的关注[注一]。 Version 3.0 的网页大都经过 validation, 其中多数是 XHTML 1.1, 少数是 HTML 4.01, 另有极少数是 XHTML 1.0 (当然, 也可能有个别网页因遗忘而未 validate), 文字编码则是 UTF-8。 此次改版在文字编码上并无改变, 因为 UTF-8 在我看来仍是中英文混合网站的最佳编码。 不过在语言标准上此次却作了新的选择。

互联网的 markup language 标准早先一直是 HTML 的天下, 但 HTML 自八年多前 (即 1999 年) HTML 4.01 成为 W3C 的推荐 (Recommendation) 以来, 便再未出台新的推荐。 另一方面, 2000 年初, 一个既与 HTML 保持很大兼容性, 又符合 XML 要求的新标准 XHTML 1.0 成为了 W3C 的推荐。 从理论上讲, 象 XHTML 那样兼具 HTML 及 XML 两家之长的的新标准无疑具有很大的优越性, 因此 XHTML 问世之后很多人以为这就是 HTML 标准的未来走向。 受此鼓舞, XHTML 工作组 (Working Group) 再接再厉, 在短短一年多的时间里就推出了 XHTML 1.1。 而后又于 2006 年推出了 XHTML 2.0 的草稿。

XHTML 的这些气势如虹的推进几乎是一场没有竞争对手的独脚戏。 但可惜的是, 仿佛应了许茹芸那首动人歌曲的歌词, 这场独脚戏虽然 “对白总是自言自语”, “对手都是回忆”, 但却 “看不出什么结局”。 之所以如此, 是因为 XHTML 虽一度没有对手, 但同时也缺少强有力的后台老板, 尤其是 XHTML 2.0, 迄今没有任何浏览器开发者表示过对它的支持。 XHTML 的发展虽有良好的理论动机, 也具备优越的设计理念, 却面临一个非常实际的困难。 这一困难在 XHTML 1.1 的设计中就露出了端倪。 XHTML 1.1 在陈述其与 XHTML 1.0 的差异时明确写道: “XHTML 1.1 represents a departure from both HTML 4 and XHTML 1.0”。 问题就出在了这 departure 上。 沿着这条 departure 之路, XHTML 变得越来越学究, 离互联网的人间烟火越来越远, 变得优美而不实用。 这一点在 XHTML 1.1 中还只是初步显现, 因为 XHTML 1.1 与 XHTML 1.0 的实际差别很小 (这是本站能在 version 3.0 中大量采用 XHTML 1.1 的原因)。

但严格讲, 即便是 XHTML 1.1, 假如完全按照 W3C 的建议来使用, 也足以对网站造成重大障碍。 这是因为原则上, XHTML 1.1 文件的类型 (media type) 应该定义为 application/xhtml+xml, 而非互联网上普遍使用的 text/html (当然, W3C 并未对此作强制规定, 按照其在说明文件 XHTML Media Types 中的说法是: XHTML 1.1 的类型 should not 设置为 text/html)。 那么这两种类型究竟有什么差别呢? 它们的差别就在于: 类型为 text/html 的文件是由浏览器的 parser 来处理的, 而浏览器的 parser 素以宽松而著称。 这种宽松虽然娇惯出了千奇百怪的 HTML 错误 (即便象 Google、 微软、 Yahoo 那样著名的网站, 它们的 HTML 也是错误百出, 完全通不过 validation 的), 但同时也造就了互联网上最牢不可破的既成事实。 任何浏览器如果不支持那些错误, 网民就会很生气, 后果就会很严重。 因此一代代的浏览器为了支持尽可能多的 “错误”, 不得不无限期地延续传统; 而一批批的网站编程人员则放心大胆地延续错误, 甚至将某些错误当成特殊技巧、 乃至独门绝活来使用。

另一方面, 如果文件类型被设置为 application/xhtml+xml, 则是向浏览器发出一个信号, 表示这一文件可以交由 XML parser 来处理。 这样一来, 立刻就会出现两个非常严重的问题: 一个是 XML parser 与浏览器的 parser 截然不同, 它对错误的忍耐是有限的, 而且这限度是零。 XML parser 一遇到错误就会终止, 而用户在浏览器上看到的就只有 error report。 对于网页来说, 这就是死刑。 另一个严重问题则是目前用户数最多的浏览器 - 微软的 IE - 并不支持类型为 application/xhtml+xml 的网页, 虽然这一点未必不会改变, 但就目前而言它足以让类型为 application/xhtml+xml 的网页边缘化。 有鉴于此, 目前互联网上几乎所有的 XHTML 文件都被设置成了 text/html 类型 (本站的 version 3.0 也是如此), 以便能得到从宽对待。 而这只在 XHTML 1.0 下才是完全 “合法” 的 (XHTML Media Types 中的说法是: XHTML 1.0 的类型 may 设置为 text/html)。

如果说 XHTML 1.1 的 departure 还只是初露端倪, 那么到了 XHTML 2.0, departure 的势头就变得相当迅猛, 甚至连目前网站设计中广泛使用的 <img /> 之类的 tag 也被摒弃了。 XHTML 2.0 与 PHP 等技术的配合也颇有问题 (主要根源也在于 media type)。 因此, 尽管在 XHTML 的 roadmap 上, XHTML 2.0 将在几个月之后的 2008 年 9 月成为推荐, 但目前我还看不到它被网站编程人员广泛而严格使用的前景。

时间跨入了 2008 年, 在互联网标准之中又杀入了一匹 “黑马”。 2008 年 1 月 22 日, W3C 公布了 HTML 5.0 的早期草稿。 当然, 把 HTML 5.0 称为黑马是不太合适的 (因此要加引号), 因为 HTML 系列一直是主流标准, 毛色其实是很白的。 只不过自 1999 年以来, 很多人已习惯将 4.01 视为其最后版本。 HTML 5.0 作为 HTML 家族的最新成员, 很好地继承了以前各版 HTML 的传统, 以互联网的现状为核心考虑, 在此基础上一方面对 HTML 的缺陷进行适度弥补, 另一方面则对浏览器处理 “错误” 的方式进行适度规范。 这些都是与 XHTML 截然不同, 但却让 web 编程人员感到欣慰的考虑。 更重要的是, 与 XHTML 的后台老板空缺不同, HTML 5.0 的出台直接受到除微软外的所有主要浏览器开发者的支持, 而微软虽未公开支持, 但 HTML 5.0 的工作组核心成员中却有来自微软的成员。 按照 HTML 5.0 的 roadmap, 它将在 2010 年 9 月成为推荐。 虽然在时间上比 XHTML 2.0 晚两年, 但 HTML 5.0 被浏览器支持的前景很可能要比 XHTML 2.0 更好[补注一]

经过了这些冗长介绍, 现在回到本站的改版上来。 对于本站的标准选择来说, HTML 5.0 还有一个重要特点, 那就是它包含了一个类似于 XHTML 1.0 的与 HTML 具有一定兼容性的 XHTML 标准, 这一标准被称为 XHTML 5.0。 这个名字容易让人迷糊, 以为它是比 XHTML 2.0 更后续 - 从而更远离人间烟火 - 的版本, 实际上它与 XHTML 系列完全是同床异梦。 考虑到所有这些发展, 尽管现在预言互联网标准花落谁家也许还为时过早, 但有一个标准已经显出了它在当前网站开发中的重要性来, 那便是 XHTML 1.0, 因为这是一个 - 并且是唯一一个 - 处于 HTML 与 XHTML 分界点上的标准, 与两者都可以融合。 XHTML 从这里开始 departure, HTML 则始终维持一个类似于它的版本, 因此无论互联网的标准走向何方, 用 XHTML 1.0 编写的网站都会有较好的适用性。 因此在我看来这是目前在 markup language 方面的最佳选择。 有鉴于此, 在本站的新版中, 我将采用 XHTML 1.0 作为标准。

最后再回到改版事宜上来。 如前面所述, 此次改版的重点不在于界面设计 (虽然这方面也有所变动), 而在于程序结构。 新版网站将不再使用 frameset, 编程语言则改为 PHP。 目前新版网站在功能上的增加主要有两项: 一项是在网页左侧显示本页及整个网站 (但不包括旧贴档案馆及繁星文集) 的点击次数 (“点击次数” 这一术语若直译的话, 对应于网站统计中的 hits, 但实际上本站统计的是网页的浏览次数, 即所谓 pageviews[注二])。 另一项则是用 “随机文选” 替代原先首页上的 “昔日热点”, 这是以随机选取的作品取代固定的文章 (在改版之初, 由于文章较少, 新作就是旧作, “随机文选” 与 “最近更新” 有很大几率彼此重复, 但随着文章数目的增加, 两者的重复将会越来越少)。 今后, 我将编写类似于博客所具有的读者讨论功能 - 为诸如此类的功能扩展提供框架支持也正是此次改版的主要动机之一。

在未来几个月的时间里, 除继续增加新作外, 我将大致依照从旧到新的顺序对网站上的多数文章进行整理和改版 (少数将被删除), 并逐一上传。 这一过程中, 多数文章都将在 “最近更新” 中出现一到两天。 在整理旧作的过程中, 我将对部分文章作必要的修改, 但主要限于纠正错别字一类的细微改动。 若有大的变动则将通过序言、 补注或附录等方式进行。 此外, 某些主题相近的旧作将会被合并, 某些篇幅较大的文章则会被分解。

注释

  1. 需要说明的是, “互联网标准” 是一个很大的概念, 本文所述的只是其中有关 markup language 的标准。
  2. Pageview 与 hit 的区别在于前者是以网页作为统计单元, 而后者则是以网络服务器 (web server) 向用户提供的文件作为统计单元。 举个例子来说, 如果一个网页带有 10 张图片, 则用户点击该网页所产生的 pageview 为 1 (因为用户浏览了 1 个网页), hit 则为 11 (因为在这一过程中网络服务器要向用户提供 11 个文件: 1 个网页文件外加 10 个图片文件)。

补注

  1. 关于 “HTML 5.0 被浏览器支持的前景很可能要比 XHTML 2.0 更好” 的推测基本得到了证实。 近日, W3C 已在网站上宣布 XHTML 2.0 工作组将在 2009 年底停止运作, W3C 将增加对 HTML 5.0 的资源投入。 另一方面, 最新版本的 Firefox (v3.5) 已经开始提供对 HTML 5.0 的部分支持。 这一切都说明 HTML 5.0 已经后来居上。 [2009-07-04]

相关链接

站长近期发表的作品

本文的讨论期限已过, 如果您仍想讨论本文,
请在每个月前七天的 “读者周” 期间前来讨论。

>> 查阅目前尚在讨论期限内的文章 <<