作者TonyQ (^^)
看板Ajax
標題Re: [翻譯] 「讓 AJAX 網頁可以被網路爬蟲讀取」建 …
時間Tue Oct 13 10:43:49 2009
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: 有寫 GWT 的可能懂起來比較快
: (是說,我沒寫過傳統的 AJAX,所以這樣講好像也不太可靠 XD)
: TonyQ 講的有點對又有點不太對
: 現在 #xxxx 就可以連到指定的 resource
: (或著說,產生指定的 resource)
: picasa 我沒用不知道,但是 gmail 是這樣子處理的
: 這篇要以 search engine 的角度去看,會比較快
: GWT 上頭的 Hyperlink(ㄜ... 是個物件,功能上跟 <a> 等意)
: 按下去之後會改變 URL 裡頭 # (錨點)
: 於是這篇建議,要被 search engine 處理的 URL,就改成「!#=AJAX」
: 更正確講,是 web server 裡頭的 headless browser 產生的 HTML 中
: 要被 search engine 處理的 URL 要改成「?_escaped_fragment_=AJAX」
: 大概是這樣
: ======
: 反正只是建議書啦,還不用太認真看待 XD
幾行推文講不出我的理解 , 我還是多講幾句好了.
一般的 ajax 操作都是先有格子 -> request -> 有內回來填格子 ,
(要看懂底下的至少要有一點點 js 基礎啦 ,
連基礎都沒有就還請先加強自己功力...orz)
以簡單的表格換頁來說好了
現在有這樣的表格頁面 , 請注意這是一個完整的 html page .
假設是 user.html
--------------html start ---------------
---------以上有網頁其他區塊----------
編號 品名
1 a
2 b
3 c
4 d
5 e
1-5/20 下一頁
---------以下有網頁其他區塊----------
--------------html end-----------------
假設我按下一頁是一個 ajax request , 那合理的作法會是
發XMLHttpRequest xxx.php(or asp...視語言而定,總之就是個page) ,
取得
足夠以表示下一頁的資訊 (可能是純html , json, xml...)
讓我假設最單純的狀況下他是給html , 直接塞 table 的inneHMTL ,
也就是拿到的回應(response)是
-------------------------------------
編號 品名
6 f
7 g
8 h
9 i
10 j
6-10/20 上一頁 下一頁
-------------------------------------
然後第三個步驟 , 就是把這個 response 透過 innerHTML 塞回去 ,
成為一個新的 full page ,
但是整體上頁面都是透過 request 跟 js 在進行.
到這裡我重新介紹了一次過去的傳統 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 .
我的理解大概是這樣 ,
原則上這還是不脫之前所看到對search engine友善的討論...
覺得有誤的地方再提出來討論吧 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.137.22.216
※ 編輯: TonyQ 來自: 114.137.22.216 (10/13 10:49)
推 lgzenith:我覺得大致上也是這樣子,不過原文headless瀏覽器的部份 10/13 11:00
→ lgzenith:有人可以說明一下嗎?這個不是很確定 10/13 11:01
推 PsMonkey:原文有提到一個例子阿... HtmlUnit 10/13 11:47