关于hijax技术

曾经,Ajax被当成是Web2.0的全部,正如DIV+CSS被当成是Web标准一样.到如今,应用大量Ajax技术的网站仍然面临着一个重要问题,那就是有意义的内容无法被搜索引擎收录.面对大量Ajax网站的产生,搜索引擎(事实上是爬虫)正在朝着越来越像用户浏览器的方向发展.

很多站长可能发现,他们利用JavaScript脚本来记录网站访问的日志里,经常能发现来自”美国加利福尼亚州山景市Google公司”的访问记录.别高兴得太早,可不是Google的工程师在看你的网站,只是他们支持JavaScript的爬虫刚刚抓取了你的网站.

当然,为了能让你的Ajax网站能被搜索引擎收录正确的内容,你的网站必须做到:

每一个不同的内容都能通过一个完整的URL来访问!

例如,GoogleReader的Trends页面,可以通过http://www.google.com/reader/view/#trends-page来访问.但是,仅仅使用锚点(即’#'号后面跟着文本),并不能让你的Ajax内容被爬虫抓取.因为,链接中的’#'号和其后面的内容是不被发送到服务器端的!也就是说,你在浏览器中输入http://www.ideawu.net/和http://www.ideawu.net/#ajax,这对服务器都是一样的.

有一种被称为”Hijax”或”Hijax-links”的技术可以用来保证既使用Ajax,网站也能被爬虫抓取.这项技术的要求是,你的Ajax网站要创建真正的链接:

<a href="http://www.ideawu.net/?p=1">
查看文章详细内容</a>

但是,Ajax在哪呢?关键在于用JavaScript使这个链接的点击失效(不跳转),转而执行你的js代码.直观的做法是:

<a href="http://www.ideawu.net/?p=1" onclick="ajax_view(1); return false">
查看文章详细内容</a>

说句题外话,我对我公司内部某个新闻系统使用Ajax,但不应用”Hijax”感到十分愤怒!因为Ajax降低了查看新闻的效率!

Google公司更前进了一步,它制定了一个规范(AjaxCrawlingSpecification),希望那些使用Ajax同时又想被Google正确收录的网站能够遵守.这个规范对于网站主来说的一个关键点就是,创建格式符合规范的链接,并为这些每一个唯一的链接提供一个完整的页面.

对于上面查看文章详细内容的例子,链接应该改为

http://www.ideawu.net/#!view_1

是的,就是在’#'号后面跟着一个感叹号.前面已经说过,‘#’号和其后面的内容是不被发往服务器端的,所以,Google的爬虫会把这个URL链接转成一个原始的链接

http://www.ideawu.net/?_escaped_fragment_=view_1

当你收到这样的一个链接访问请求时,说明就是Google的爬虫来了.然后,你给它返回包含1号文章详细内容的完整的HTML,包括html,body等标签.然后,Google的索引程序会解析这个HTML,提取出关键字等.当用户在Google网站查询该页面包含的关键字,并且你的页面出现在结果中,用户就会看到一个”http://www.ideawu.net/#!view_1″的链接.

关于AjaxCrawling的更多内容可以查看:http://code.google.com/web/ajaxcrawling/index.html

相关推荐