每個程式設計師必知之SEO

Phodal發表於2014-05-15

似乎因為受這篇文章的影響 http://katemats.com/what-every-programmer-should-know-about-seo/ ,作為一個擅長前端兼SEO的設計師,於是我也覺得我應該寫一個每個程式設計師必知之SEO

搜尋引擎是如何工作的

如果你有時間,可以讀一下谷歌的框架:

http://infolab.stanford.edu/~backrub/google.html

這是一個老的框架,有些過時,但非常平易近人,甚至在我們中間的非白皮書的讀者,圖示、微笑什麼每個程式設計師都應該知道的關於搜尋引擎優化及其絕對概念的解釋更詳細,我只一筆帶過。

搜尋時發生什麼了

  • 使用者輸入查詢內容
  • 查詢處理以及分詞技術
  • 確定搜尋意圖及返回相關、新鮮的內容

search-engine-arch

為什麼需要SEO

這是一個有趣的問題,答案總離不開“為網站帶來更多的流量”。

爬蟲與索引

我們先看看來自谷歌的爬蟲工作的一點內容:

抓取是 Googlebot 發現新網頁,並更新這些網頁以將網頁新增到 Google 索引中的過程。

我們使用許多計算機來獲取(或"抓取")網站上的大量網頁。執行獲取任務的程式叫做 Googlebot(也被稱為漫遊器或資訊採集軟體)。Googlebot 使用演算法來進行抓取:計算機程式會確定要抓取的網站、抓取頻率以及從每個網站中獲取的網頁數量。

Google 的抓取過程是根據網頁網址的列表進行的,該列表是在之前進行的抓取過程中形成的,且隨著網站管理員所提供的站點地圖資料不斷進行擴充。Googlebot 在訪問每個網站時,會檢測每個網頁上的連結,並將這些連結新增到它要抓取的網頁列表中。新建立的網站、對現有網站所進行的更改以及無效連結都會被記錄下來,並用於更新 Google 索引。

也就是如原文所說:

谷歌的爬蟲(又或者說蛛蛛)能夠抓取你整個網站索引的所有頁。

為什麼谷歌上可以搜尋整個網際網路的內容?因為,它解析並儲存了。而更有意思的是,它會為同樣的內容建立一個索引或者說分類,按照一定的相關性,針對於某個關鍵詞的內容。

PageRank對於一個網站來說是相當重要的,只是這個比較複雜,涉及其他網站連結向你的網站,以及流量,當然還有域名等等。

什麼樣的網站需要SEO?

下圖是我的部落格的流量來源:

What Site Need SEO

正常情況下除了像騰訊這類的QQ空間自我封閉的網站外,或者不希望洩露一些使用者隱私的網站如Facebook、人人等等,其他網站都需要SEO。

  • 如果你和我的網站一樣需要靠搜尋帶來流量
  • 如果你只有很少的使用者訪問,卻有很多的內容。
  • 如果你是為一個公司、企業工作以帶來業務。
  • ......

SEO與程式設計的不同之處

SEO與程式設計的最大不同之處在於以下方面。

程式設計的核心是技術,SEO的核心是內容。

內容才是SEO最重要的組成部分,這也就是騰訊複製不了的東西。

SEO基礎知識

確保網站是可以被索引的

一些常見的頁面不能被訪問的原因:

  • 隱藏在需要提交的表格中的連結
  • 不能解析的JavaScript指令碼中的連結
  • Flash、Java和其他外掛中的連結
  • PowerPoint和PDF檔案中的連結
  • 指向被meta Robtots標籤、rel="NoFollow"和robots.txt遮蔽的頁面的連結
  • 頁面上有上幾百個連結
  • frame(框架結構)和iframe裡的連結

對於現在的網站來說還有下面的原因,通常來說是因為內容是動態生成的,而不是靜態的:

  • 網站通過WebSocket的方法渲染內容
  • 使用諸如Mustache之類的JS模板引擎

什麼樣的網頁可以被索引

  • 確保頁面可以在沒有JavaScript下能被渲染。對於現在JavaScript語言使用越來越多的情況,在使用JS模板引擎的時候也應該注意這樣的問題。
  • 在使用者禁用了JavaScript的情況下,保證所有的連結和頁面是可以訪問的。
  • 確保爬蟲可以看到所有的內容。那些用JS動態載入出來的對於爬蟲來說是不友好的。
  • 使用描述性的錨文字的網頁。
  • 限制的頁面上的連結數量。除去一些分類網站、導航網站之類有固定流量,要不容易被認為垃圾網站。
  • 確保頁面能被索引。有一指向它的URL。
  • URL應該遵循最佳實踐。如blog/how-to-driver有更好的可讀性。

在正確的地方使用正確的關鍵詞

  • 把關鍵詞放在URL中
  • 關鍵詞應該是頁面的標籤
  • 帶有H1標籤
  • 圖片檔名、ALT屬性帶有關鍵詞
  • 頁面文字
  • 加粗文字
  • Descripiton標籤

內容

對於技術部落格而言,內容才是最需要考慮的因素。

可以考慮一下這篇文章,雖然其主題是以SEO為主:使用者體驗與網站內容

不可忽略的一些因素是內容才是最優質的部分,沒有內容一切SEO都是無意義的。

複製內容問題

一個以使用者角度考慮的問題。

使用者需要看到多元化的搜尋結果

所以對於搜尋引擎來說,複製帶來的結果:

  • 搜尋引擎爬蟲對每個網站都有設定的爬行預算,每一次爬行都只能爬行trpgr頁面數。
  • 連向複製內容頁面的連結也浪費了它們的連結權重。
  • 沒有一個搜尋引擎詳細解釋它們的演算法怎樣選擇顯示頁面的哪個版本。

於是上文說到的作者給了下面的這些建議:

避免從網上覆制的內容(除非你有很多其他的內容彙總,以使它看起來不同——我們做頭條,對我們的產品頁面的新聞片段的方式) 。這當然強烈適用於在自己的網站頁面,以及內容重複可以混淆搜尋引擎哪些頁面是權威(它也可能會導致罰款,如果你只是複製貼上別人的內容也行) ,然後你可以有你自己的網頁互相競爭排名!

如果你必須有重複的內容,利用相對=規範,讓搜尋引擎知道哪個URL是它們應該視為權威的。但是,如果你的頁面是另一個,在網路上找到一個副本?那麼開始想出一些策略來增加更多的文字和資訊來區分你的網頁,因為這樣重複的內容是決不可能得到好的排名的。

——待續。

保持更新

谷歌對於一個一直在更新的部落格來說會有一個好的排名,當然只是相對的。

對於一個技術部落格作者來說,一直更新的好處不僅可以讓我們不斷地學習更多的內容,而且也可以保持一個良好的習慣,而對於企業來說更是如此。如果我們每天去更新我們的部落格,那麼搜尋引擎對於我們網站的收錄也會變得越來越頻繁。那麼,對於我們的排名及點選量來說也算是一個好事,當我們可以排名靠前時,我們的PR值也在不斷地提高。

更多內容可以參考:Google Fresh Factor

網站速度

谷歌曾表示在他們的演算法頁面載入速度問題,所以一定要確保你已經調整你的網站,都服從最佳做法,以使一切迅速。

過去的一個月裡,我試著提高自己的網站的速度,有一個相對好的速度,但是受限於“域名解析速度”以及“VPS”。

網站速度分析與traceroute

UX與網站速度優化——部落格速度優化小記

Nginx ngx_pagespeed nginx前端優化模組編譯

保持耐心

這是有道理的,如果你在需要的谷歌機器人抓取更新的頁面,然後處理每一個頁面,並更新與新內容對應的索引的時間因素。

而這可能是相當長一段時間,當你正在處理的內容PB級。

SEO是一個長期的過程,很少有網站可以在短期內有一個很好的位置,除非是一個熱門的網站,然而在它被發現之前也會有一個過程。

連結

在某種意義上,這個是提高PR值及網站流量的另外一個核心,除了內容以外的核心。每個程式設計師必知之SEO

  • 連結建設是SEO的基礎部分。除非你有一個異常強大的品牌,不需要幹什麼就能吸引到連結。
  • 連結建設永不停止。這是不間斷營銷網站的過程。

關於連結的內容有太多,而且當前沒有一個好的方法獲取連結,雖然在我的網站已經有了

Links to Your Site

Total links

5,880

同時尋求更多的連結是更有利更相關的連結可以幫助一樣多。如果你有你的內容的分銷合作伙伴,或者你建立一個小工具,或其他任何人都會把連結回你的網站在網路上——你可以通過確保各個環節都有最佳的關鍵字錨文字大大提高鏈路的相關性。你還應該確保所有連結到你的網站指向你的主域( http://www.yourdomain.com,像http://widget.yourdomain.com不是一個子域) 。另外,你要儘可能多的聯絡,以包含適當的替代文字。

另外,也許不太明顯的方式,建立連結(或者至少流量)是使用社交媒體——所以設定你的Facebook ,Twitter和谷歌,每當你有新的連結一定要分享。這些通道也可以作為一個有效的渠道,推動更多的流量到你的網站。

由社交渠道帶來的流量在現在已經越來越重要了,對於一些以內容為主導的網站,而且處於發展初期,可以迅速帶來流量,可以參考一下這篇文章:

尋ta分析與網站內容

一些更簡單的辦法就是交換連結,總之這個話題有些沉重,可能會帶來一些負面的影響,如黑帽SEO......

參考來源:

《SEO藝術》(The Art of SEO

相關文章