轉自(butian.org/knowledge/develop/ajax/20090622/1526.html
)
不久前在國外的網站上看到了一篇標題為:“AJAX技術是搜尋引擎殺手”,文中說
對於搜尋引擎來說,網站的大部分內容是不可見的,不能串連的,不能定位的,或者說是不能找到的。因此,這在許多應用中限制了AJAX技術”。但是,事實並非如此,這些觀點不完全正確。
我們想要AJAX技術和搜尋引擎同時存在,並且很好的相容。這一想法一直被認為是不可能的,但是BoonEx這個應用軟體將會給我們一些啟發和建議。
AJAX是一項偉大的技術,大部分所謂的“缺點”是可以克服的。Web開發中,AJAX是一項非常流行,但是我們也聽到大量關於Ajax技術的不足和缺 陷,說搜尋引擎不能非常友好的相容它(如出現瀏覽網頁不能後退、搜尋引擎不能找到的問題)。不過,稍微考慮一下,這些問題都是可以用技術來控制的的。
有一種互動Orca論壇軟體和即將研發出來的產品——Directory、Wiki、Blog中,都將廣泛的使用AJAX技術,並解決上述問題。
Orca是一個非常成功的產品。它100%使用AJAX技術,是一個論壇軟體,它已經有一個可操作後退按鈕,永久串連,友好的搜尋引擎結構和標籤頁面。想 知道更多? 再過兩周,看Orca的1.1版本,它有許多非常酷的新特徵,包括唯一的頁面標題標籤,和更加人性友好的URLs(可選擇的複製,在phpBB或者 vBulletin論壇發言,或者還有其它的URLs結構)。幾個月後,我們將計劃使得Orca比其他傳統的論壇更加友好和好用。
Orca是開源的,有GPL認證,免費的產品。我們決定把Orca發布在open waters,使它真正的流行和傳播開來。你能看它的效果,使用它,或者去參與它的開發。Orca——互動論壇。
現在,為了使搜尋引擎也能找到那些廣泛使用AJAX技術的網站,我們將共用這些資訊,協助網站管理員開發基於AJAX技術、SE-friendly的網站。
網站的管理員開發了兩個版本的網站——一個為瀏覽的使用者準備,一個為搜尋引擎準備。我們將二者合二為一。我們使用XSL轉換來產生網站的內容。XSL轉換 可以在用戶端(瀏覽器)進行或者在伺服器上進行(php語言)。這就有效避免了為AJAX和搜尋引擎寫不同的代碼了。同樣的代碼為搜尋引擎和使用者提供了 不同的功能。
舉個例子來說,如果你去看Orca中的url,你就會發現它是這麼寫的:
< a onclick="return f.selectForum(5, 0);" href="index.php?action=goto&forum_id=5&start=0" >Orca Installation< /a >
當一個使用者點擊這個連結,瀏覽器就會去執行onclick事件,如果“return f.selectForum(5, 0)”這個語句返回false的話,瀏覽器就會執行onclick代碼,而不執行屬性href所指向的連結。在這種情況下,我們在用戶端執行xsl轉換 (這能夠提高伺服器的效能,因為xsl轉換是在用戶端啟動並執行)。
當搜尋引擎搜尋這個URL時,它所看到僅僅是url的href屬性部分,並且以一個常規的、具有相同內容的URL來開啟這個網頁。在這種情況下,xsl轉換是在伺服器段進行的,這個URL產生一個常規的html頁面。
那後退按鈕——以前AJAX的敵人,又該怎麼處理了? 簡單!
在Orca中,後退按鈕是基於URL後面的#號上的。Javascript能夠讀並且能夠改變URL中#號後面的值的,這一切都不需要進行頁面重載,而是瀏覽器將把這個URL(#號後面帶有新的內容)路徑存在瀏覽器的曆史中。
順序如下(以Orca為例):
1. 使用者通過AJAX開啟一個論壇。
2. Javascript函數在頁面重新載入目的地區域並且把這個行為資訊存在URL中(舉個例子:#action=goto&forum_id=5)。
3. 瀏覽器將URL存在瀏覽器的曆史檔案夾中。
4. 使用者點擊後退按鈕。
5. Javascript指令碼看到URL後面的#號部分已經發生變化了,將新的內容放在#號後面,解析它,調用Javascript函數來重新載入業面的目的地區域(舉個例子:#action=goto&forum_id=3將會開啟id=3內容)。
分頁描述語言的尾碼:Mozilla和IE瀏覽器處理這些URLs(變化#號後面不同的內容)以不同的方式。所以為它們編寫的Javascript代碼也是不同的,但是演算法卻是一樣的。
須注意的是:xsl轉換是非常嚴格的——你必須很仔細的寫xsl模版,最後還得寫非常正確的HTML代碼。
這僅僅是一個開始。我們將計劃提高這些技術,並且將他們用在Orca和其他的BoonEx產品中