三大核心功能:
- RSS
- Permalink
- Trackback Pin
RSS
首先谈RSS,RSS其实很多朋友都已有了解。RSS是站点用来和其他站点之间共享内容的一种简易方式(也叫聚合内容),通常被用于新闻和其他按顺序排列的网站,一段项目的介绍也可以是包含新闻的全部介绍等。或者仅仅是额外的内容或者简短的介绍。这些项目 的链接通常都能链接到全部的内容。网络用户可以借助RSS Reader在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。网站提供RSS输出,有利于让用户发现网站内容的更新。
现在很多站点都有RSS Feed,那么为什么是Blog的核心呢?RSS 本质上中是一种遵循W3C RDF规范的XML格式,Blog和RSS结合十分紧密,自Blog一诞生以来,标准的Blog站点都支持RSS技术规范,能够包含网站的Logo、Link、标题、内容等等。
Permalink
中文翻译一般叫做固定链接,其实我觉得翻译成静态链接更为贴切。下面切入正题:
不得不承认,将动态网页链接rewriting成静态链接是最保险和稳定的面向搜索引擎优化方式。
此外随着互联网上的内容以惊人速度的增长也越来越突出了搜索引擎的重要性,如果网站想更好地被搜索引擎收录,网站设计除了面向用户友好(User Friendly)外,搜索引擎友好(Search Engine Friendly)的设计也是非常重要的。进入搜索引擎的页面内容越多,则被用户用不同的关键词找到的几率越大。在Google的算法调查一文中提到一个站点被Google索引页面的数量其实对PageRank也是有一定影响的。由于Google 突出的是整个网络中相对静态的部分(动态网页索引量比较小),链接地址相对固定的静态网页比较适合被Google索引(怪不得很多大网站的邮件列表归档和BLOG按日期归档的文档很容被搜的到),因此很多关于面向搜索引擎 URL设计优化(URI Pretty)的文章中提到了很多利用一定机制将动态网页参数变成像静态网页的形式:
实现方式主要有2种:
具体实现细节不是本文重点,不再细述。很多BLOG程序后台都能打开此功能,也要注意WEB服务器的设置,使用虚拟主机无法设置服务器的朋友请参考path_info的一些资料。
静态地址还有什么好处:
- 隐藏后台实现:这在后台应用平台的迁移时非常有用:当从asp迁移到java平台时,对于前台用户来说,根本感受不到后台应用的变化;
- 简化数据校验:比如我们需要将应用从news.asp?id=234迁移成news.php?query=234时,前台的表现可以一直保持为 news/234.html。从实现应用和前台表现的分离:保持了URL的稳定性,而使用WEB服务中的mod_rewrite甚至可以把请求转发到其他后台服务器上。
从技术层面来讲,论坛如果想被搜索引擎更多的关注的话,同样可以实现Permalink。
Trackback
TrackBack最早是Movable上的一个小功能。可以说就是这个小功能在blog界却掀起了一场革命。
TrackBack为将全世界无数个blog连接起来的功能。例如,当你读了某个网站的文章,想对此写下自己的感想。这个时候利用网站准备的讨论功能进行留言是很最常见的做法。但这样只是把自己的评论意见写下来向别人的网站投稿,而你自己手里却什么也没留 下。
TrackBack 则与之有很大的区别。可以把评论写到自己网站上。然后向原始文章的服务器发送该网页的URL及标题、部分正文、网站名称等信息(注)。尽管这一过程只是称之为“发送TrackBackPing”,但通过这种办法,在原始文章的地方就留下了你的评论的URL 、标题等部分信息。当然别人也可以向原始文章发送TrackBack Ping,所以在原始文章中就将包括你的TrackBack Ping在内的所有评论都记录了下来。
此外,如果你在自己网站上也设置了TrackBack Ping功能的话,那么谁都可以通过TrackBack Ping来发表针对你的意见了。这样,多家网站就通过相关话题而联接起来。各种评论在因特网上就像网眼一样联接起来。这样就创造出了与日记网站完全不同的文化。
注:发送地址采用原始文章指定的URL,这一URL就称为“TrackBack Ping URL”。TrackBack的技术标准刊登在“LowLife.jp”的blog网站上。
如果你使用的是服务商提供的Blog服务,服务商没有提供Trackback怎么办?或者你的空间不足以放下太多的Trackback回复,又怎么办?到HaloScan.com去看看。
什么是Trackback呢? http://www.donews.net/weaver2000/archive/2004/12/08/197144.aspx
简单说来,Trackback是网站与网站之间互相通告的一种方法。它能让甲对乙说:“这篇文章可能是你感兴趣的”,要实现这一动作,甲向乙发送一个Trackback Ping(引用通告)即可。在这种情况下,一个ping就是一条从一个web服务器发送到另一个服务器的短消息(a small message)。
Trackback Ping是由Moveable Type发明的规范,他们说Trackback是"a framework for peer-to-peer communication and notifications between web sites"。这里是他们的Trackback技术规范文档:http://www.movabletype.org/docs/mttrackback.html 。
举个例子来说明一下。比如我在鱼头的Blog中看了一篇我感兴趣的文章,对这篇文章我自己有一些看法,如果按照传统BBS的做法,我需要在鱼头这篇文章下发表自己的评论,但这样做的话我的文字只能存在于鱼头的网站上,我无法再维护自己的这篇评论。另一个情况是我在自己的Blog中也在写一篇相类似的文章,我希望鱼头也能来看一看我的这篇,传统BBS的习惯还是得到鱼头的文章下发一篇回复,把我的URL贴过去。
但有了Trackback Ping,我们的Blog不再需要这样做。
Blog跟BBS有点重要的不同,Blog是一种个人创作,用Blog来发表自己的东西,保存自己的东西,即使是对他人Blog文章的评论也要在自己的Blog中永久保留下来。通过Trackbak,我就可以在自己的Blog中发表文章,同时把自己这篇文章的URL地址Ping到鱼头的那篇文章上去。这样,所有阅读鱼头文章的人也能通过Trackback顺藤摸瓜地来我的Blog看我的文章。
所以,当我们的Blog有了Trackback Ping功能,那么谁都可以通过Trackback Ping来发表意见和评论了。这样,多家Blog网站就通过相关话题而联接起来。各种评论在Internet上相互连接而织成一张大网。因此,可以说,Trackback创造出了Blog与BBS、Diary完全不同的文化,Blog的世界通过Trackback而变成真正的无限互连。
作为Blogger,让我们习惯于这样讨论问题和做评论吧:把内容写在自己的Blog里面,Trackback Ping到别人的Blog。这个概念是论坛模式里从来没有的,称为Remote Commenting。
如何在Blog中实现Trackback?
在有Trackback功能的Blog系统中,每篇Blog文章都有两个URL,一个是要访问这篇文章所使用的URL,另一个就是Trackback Ping URL(引用通告地址),它是用来接受来自其他Blog网站Trackback Ping的程序。当我发表文章的时候,想要通知鱼头的话,只需要把鱼头那篇文章的Trackback Ping URL贴到我这边文章中来,我提交文章时,系统就会按照这个URL发送一个Ping给鱼头的那篇文章。而鱼头则将在自己的文章下看到类似这样的一个引用通告:
标题: Joyhero的文章
来自: Joyhero的Blog
摘要: Joyhero的文章内容摘要...
地址: http://joyhero的文章地址
这个Trackback Ping是通过标准的HTTP协议从我的Blog发送到鱼头的Blog的,我的Blog发送一个POST格式的HTTP请求到鱼头那篇文章的Trackback Ping URL。这个请求的content type是application/x-www-form-URLencoded,它大概是这个样子的:
POST http://鱼头文章的TrackbackPingURL
Content-Type: application/x-www-form-URLencoded
title=Joyhero的文章&url=http://Joyhero的文章地址&excerpt=Joyhero的文章摘要&blog_name=Joyhero的Blog
早期版本的Trackback规范中,Ping是GET方式的HTTP请求,现在不再支持GET方式,只能用POST方式。参数包括:
title - 文章的标题
excerpt - 文章的摘要。在Movable Type系统中,如果摘录信息超过255个字符将会被截断为252个字符,并在后面增加...三个字符
url - 文章的永久连接。象其它永久连接一样,这个连接应可能准确地在页面中定位文章的入口,因有疑问时这个链接会用到
blog_name - 发表文章的blog的名称
在上述的参数中只有url是必须的。如果title没有提供,url的值将被用作标题。
当我的Blog发出这个Trackback Ping后,将接收一个简单的XML格式应答,如果Ping成功,那么应答的格式如下:
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>0</error>
</response>
而失败应答的格式为:
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>1</error>
<message>The error message</message>
</response>
TrackBack 的简单概念和实现架构
|
|
TrackBack 初看起来很难理解, 不过理解之后就不会有问题了. 基本上它的构想如下:
1. 某个Blog A 上有你感兴趣主题, 你想在自己的 Blog B 上发一个相关的主题, 并且希望发表的内容和回复自动发到Blog A 上. 2. 这时你就可以复制 A 上面相关的 TrackBack 链接, 输入到你的 Blog B 中的那个主题的 TrackBack URL 框中. 3. 之后你的主题和后面所有回复的摘要都会自动发往 Blog A 的那个主题中.
说白了, 就是一个跨站点的留言系统. (希望算是比较正确的描述 )
TrackBack 的实现有两个重点: 1. 作为 Blog 服务端时(也就是 Blog A), 需要能接收到各个使用了 TrackBack 连接的 Blog 发送到自己这里的信息并发回反馈. 需要解析发来的数据, 不过这个很容易实现. 2. 作为客户端时(Blog B), 需要在有新的回复时通过指定的链接发出内容摘要给服务端. 目前官方文档定义了两种方式: 1) 通过 QueryString (正在逐步废除) 2) 通过 Post Form 格式 (通过 HTTP Header 模拟的 Form Post) PHP 可以通过 fopen 实现. ASP 可以通过 ServerXMLHTTP 实现(老的 XMLHTTP 性能和功能不理想). PERL 的请参考 MovableType.
其它的就是 TrackBack List RSS 和 AutoDiscovery. 前者我实现了, 后者没有打算, 虽然还算简单. Trackback List 没多大用处, 只是用 XML 列出所有发到此 URL 的所有 Trackback 罢了.
AutoDiscovery 其实就是在页面里面隐藏一段代码, 给 Trackback 客户端自动寻找到 Trackback URL 而已(有人说 AutoDiscovery 会毁了 TrackBack 的实用性, 我深以为然, 因为这会给 spam robot 可乘之机).
但是目前 Trackback 还存在编码不同的问题, 因为规范里面没有规定. 例如我的 Blog 是 GB2312 而别人的是 UTF-8, 那么发过去就是乱码. 要把 Blog 转成 UTF-8 就需要 Windows 2000 Server 及更高版本的服务器了. 为此犹豫中.
|
最后用一句话总结这三大功能:
-
RSS:能让用户更方便的订阅
- Permalink:能更好的让你的文章被搜索引擎关注
- Trackback:能更好的与其他Blog进行交流、讨论、沟通