Google建議AJAX使用PushState而非hashbang

我們曾經在"Google可以索引AJAX與Javascript內容?“說到,Google有能力做到,但是他未必每個網站都會去抓,如果你的條件不符合他抓取,他仍舊不會抓,就算條件都符合,也要看有無抓取的必要。我們再來看看關於Google抓取AJAX的問題  …

這篇文章"Google: Use pushState Instead Of Hashbang (#!) For AJAX Navigation“說到,如果你使用AJAX的話,Google建議你使用PushState而不要使用hashbang。為什麼呢? 因為前者可以讓Google比較輕鬆的抓取內容。

以下是Matt Cutts對於PushState與hashbang的說明:

Matt Cutts說Google對於兩者的AJAX方式都「能夠」處理,但是如果你使用PushState,對於抓取而言不需要特別處理,因此我們鼓勵使用PushState。

如我們之前所說的,不要太相信Google「能夠」處理各種Javascript,因為「能夠」處理與「願意」處理是兩回事。

因為Google需要處理太多事情,並且每處理一件事情都會耗費很多資源,例如電力、CPU、記憶體、儲存空間、時間 … 等等。因此如果你只是小咖的網站,但是使用很繁複的Javascript,Google可能花了很大力氣去抓取出來,但是最後發現只是一堆沒有人想看的垃圾,因此如果你不是天王級的網站,千萬不要相信Google「能夠」處理各種Javascript,你必須讓網站非常容易抓取。

那麼為什麼PushState比hashbang容易處理呢? 因為PushState可以做到hashbang的功能,也就是不必刷新頁面下可以改變URL,並且比hashbang更好的是,Google看到的URL就是使用者看到的URL,也就是每個不同的內容,都會有不同的可以瀏覽的URL。唯一PushState的缺點是,如果你使用舊的瀏覽軟體,不完全支援HTML5的話,就可能會掉漆。

例如以IE8.0.6001.18702舊款瀏覽軟體去看html5test.com,其分數如下:

竟然總分500分才拿到42分。

以Google Chrome瀏覽軟體去看html5test.com,其分數如下:

Google Chrome瀏覽軟體拿下了468分。

並且我們以IE8與Google Chrome去處理PushState的程式碼,確實IE8仍舊需要Refresh,沒有達成AJAX的功能,而Google Chrome則完全正常。

因此結論是,如果你以Google抓取來考量的話,PushState的方式比hashbang好,但是如果你以使用者端來考量的話,必須測試PushState是否在某些瀏覽軟體會發生不支援的情況。

敬請留言

你的回應對我們是很重要的. 你的電子郵件將不會被公開.

請等待 ...
*
Loading Facebook Comments ...