對於高級SEO來說,需要掌握的知識比SEO入門者要多得多。其中深刻理解搜索引擎與網站服務器的互動是關鍵部分,這裡包含了許多HTTP協議的知識點以及前後端開發的技術。
JavaScript SEO是SEO中的上乘武功
筆者從事SEO近二十年,可以體會到所有上級SEO的難點都在於一些最底層而細節的東西。如果我們把TDK(Title-Description-Keywords)作為SEO中最Low的內容,SEO中的內容行銷部分和外鏈建設作為中下級部分,技術SEO(Technical SEO)作為SEO中中上級的部分,那麼JavaScript對於SEO的影響便在金字塔的頂部。本文,我們僅僅從結論來介紹SEO中的JavaScript到底怎麼玩。
相對應地有些引擎處在頂部如Google,它更好更聰明地理解你的JS資源,並知道哪些需要運用到渲染中;接下來是Bing,它並不能像Google那樣好地進行JS的支持,據說只對部分網站進行渲染;然後是像Google那樣的引擎,還未支持JS加入渲染,通常只渲染CSS,只是特定於某些負面算法對一些惡意站點進行檢測時才使用部分JS。 (如果你發現access.log中有訪問js的Google蜘蛛,那麼請通過IP驗證其真實性。)
在聽HubSpot One介紹之前,請注意本文全部內容僅僅適用於當下情況。 SEO是發展飛速的行業,今天的不支持並不代表明天一樣不適用。如果你不想花時間聽天書,那麼只要記住這個結論:為了你的網站能最好地普遍地被各個大大小小的搜索引擎所爬行、索引、渲染、排名,那麼請避免使用JavaScript來生成任何網頁中的內容。
JavaScript和(Google)SEO,頂級SEO從業者必須要知道的15點
- Googlebot會毫無意外地請求你的js文件。
- Googlebot可以包含js和css渲染你的頁面並發現隱藏內容,但並不保證會這麼做。
- Googlebot目前使用的是相當於Chrome 41(一個三年前的版本)的一個Headless Browser,而不是最新的內核來進行渲染。
- Google把這個Headless Browser成為WRS,Web Rendering Service。
- 如果Googlebot發現你的網站相應變慢會減少爬行預算(Crawl Budget),包括減少對js文件的請求。
- 如果Googlebot在渲染過程中執行你的腳本並發現消耗太多資源,則會放棄。建議5秒鐘是執行js腳本的上限。
- Googlebot由於需要等待索引的文件資源和處理資源會進行“兩波索引”。見下圖:
- Google SERP上的cache的頁面只能代表第一波時被緩存的頁面HTML。
- js中的鏈接可以被Googlebot發現。但是當js相當複雜時,其中鏈接並不一定能被Googlebot從js腳本中生成。
- 所有的js鏈接都不傳遞頁面權重!
- Googlebot不會去“點擊”,因此“顯示更多”後通過ajax請求的內容並不會被Google發現。
- Onclick屬性必須要在<a>標籤中並且具有href屬性時才能讓Google運行js腳本發現新鏈接。
- js渲染出的Canonical鏈接對Googlebot基本無效,可信度低。
- js經常伴隨著在URL中使用#(井號),Googlebot在索引過程中會拋棄#後面的內容。
- Google再三確認並推薦使用Dynamic Rendering,並不再視其為Cloaking。你可以為Googlebot準備一份已經渲染好的版本。
你以為JavaScript是SEO的最終大Boss? Naive!
在筆者領導和參與的眾多大大小小的SEO項目中,只存在一個失敗的原因:“傲嬌的網站攻城獅們”。
如果你覺得下面這些反饋聽起來很耳熟,那麼你一定能體會到為什麼這麼說:
- 不改。就不改。
- 影響性能,不改。
- 沒空改,等空下來。
- 你怎麼證明非要這麼改?
- 不是我們的KPI,先放放
- 怎麼做網站要你教?
- 你說的都對,你自己改吧。
遺憾的是SEO是數字行銷中和技術部門最緊密聯繫的部分,如果沒有高層管理者的參與並提供優先級,技術SEO和JS SEO很難有所建樹。頂級SEO要掌握的遠比SEO工作本身多得多。唉……