作者tomin (stuffy)
看板Ajax
标题Re: [翻译] 「让 AJAX 网页可以被网路爬虫读取」建 …
时间Tue Oct 13 12:27:30 2009
※ 引述《TonyQ (^^)》之铭言:
: ※ 引述《PsMonkey (痞子军团团长)》之铭言:
: : 现在 #xxxx 就可以连到指定的 resource
: : (或着说,产生指定的 resource)
: : picasa 我没用不知道,但是 gmail 是这样子处理的
两个例子:
http://picasaweb.google.com.tw/lh/view?q=cat&psc=G#5318136144069597426
http://mail.google.com/mail/#inbox/1244ba38306fd756
看起来是相同的处理方式
不过Google自己的服务都没有用!#了 怎麽blog还建议用"!"
: : 於是这篇建议,要被 search engine 处理的 URL,就改成「!#=AJAX」
: : 更正确讲,是 web server 里头的 headless browser 产生的 HTML 中
: : 要被 search engine 处理的 URL 要改成「?_escaped_fragment_=AJAX」
: : 大概是这样
: 至於这份规格书所建议的撰写方式则是在这样的流程下额外增加一些东西.
: 这边通常需要一些额外的辅助才做得到啦,
: 像我以前写 jsp 时用的 decorator 就很适合这样做.
: 我们刚刚总共有的步骤如下
: 浏览主要页面(页1,user.html) -> 发request -> 收response ->
: 处理後出现新的页面(页2)
: 然後新的处理步骤是这样
: 浏览主要页面(页1,user.html) -> 发request
: -> (透过 a ) 将页面标示锚点且用!开头 (像是 #!page2 )
: -> 收response -> 处理後产生新的页面 2 (此时url: user.html#!page2)
: 如果使用者直接连 user.html#!page2 ,
: 这个页面要能够直接显示页面2的内容 ,这边是基本的 .
: 再来就是
: user.html?_escaped_fragment_=page2
: 应该要是产出静态(无js辅助)只有内容的 html .
纯html 不用js 无法动态产生内容吧
不用js 怎麽parse url 得到page2这个值 再去捞资料?
除非
1) *.html被controler mapping到*.php *.pl等等server side语言
2) 事先(批次)将所有可能用到的*.html output成一个一个档案
user.html?_escaped_fragment_=page2 被视为要读取user_page2.html
另外[_escaped_fragment_]这17个字元是可替换的?
例如可换成user.html?very_polite=page2
简单讲 连结要有不同的网址 对应到不同的内容
实际上 request/response收发的 通常都只是一整个网页的小小地方/区块
例如index.php/html/... 一直跟counter.php要上站人数统计
那些(AJAX暗地去捞的)小区块资料 例如counter.php 就不需去做!#这类SEO的动作吧
因为我们不希望search engine找到counter.php 而是希望它去解析index.php
因为那些片段资料 是没有足够意义的 一定要整体看(index.php)才有意义
如此一来 search engine可能永远不知道counter.php的存在
解析index.php时 counter.php的资料不会被放在index.php里面
除非你去递交counter.php的网址
或是要有一页连结 专门就是呈现静态资料(已捞完counter.php的index.php)
: 我的理解大概是这样 ,
: 原则上这还是不脱之前所看到对search engine友善的讨论...
: 觉得有误的地方再提出来讨论吧 XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.30.140
※ 编辑: tomin 来自: 140.122.30.140 (10/13 12:35)