天天看點

一起談.NET技術,關于靜态頁和SEO的看法

  我們先來讨論一下,什麼叫做“靜态頁”。有朋友說,放在硬碟上的htm或html檔案便是一種靜态頁,Web伺服器不需要做額外的處理,直接讀取檔案内容并輸出就可以了,而這樣的靜态檔案對于SEO是有幫助的。至于理由,是搜尋引擎會對html結尾的檔案給更好的權值(這好像還是結論,不是理由),而這是“常識”,“了解一點SEO的人都知道這個”,“人們普遍在使用的做法”,是以“它一定是正确的”。不過其實Google并不這麼認為,百度倒沒有給出專業說法。

  當然,我們已經重複強調,但還是需要不斷明确的一點是,即使搜尋引擎對于“靜态頁”有更好的傾向性,那也是因為其“URL樣式”,而不是“在硬碟上放置了一個html檔案”。請求方(也就是爬蟲)隻是向伺服器端發送一個URL,并擷取伺服器端給出的内容。它不會關心,也無法了解伺服器端究竟是如何得到頁面内容的,對于用戶端來說,世界上沒有“靜态”或“動态”頁面之分。有些朋友可能還是會說“不會啊,html就是靜态頁面,像aspx之類的就是動态頁面,前者不需要在Web伺服器上運算,後者需要”。

  真是這樣的嗎?并非如此,因為html檔案也是需要Web伺服器來運算的。例如,您請求一個html檔案,Web伺服器至少做了幾件事情:

  ◆如果請求包含緩存資訊,那麼處理緩存狀态。

  ◆根據URL定位到磁盤上的檔案。

  ◆進行使用者認證和授權(如,是否匿名?)。

  ◆判斷是否有權限讀取。

  ◆讀取檔案。

  ◆根據檔案類型設定MIME的值。

  ◆根據檔案最後修改日期設定Last-Modified值。

  ◆根據檔案内容及其他狀态設定其E-Tag值。

  ◆如果檔案内部有include标記,那麼讀取另一個檔案填充進來。

  看,處理一個檔案需要多少“動态運算”啊,這些可都是Web伺服器(如IIS)加載一個html所做的事情。如果想觀察這些過程,可以閱讀一些 Web伺服器源代碼,或觀察下ASP.NET中System.Web.StaticFileHandler類所做的事情,它也展現了Web伺服器處理html時的關鍵之處。事實上,如果您在IIS中将html配置給ASP.NET ISAPI的話,或者使用VS自帶的Web伺服器,最後便是由StaticFileHandler來輸出硬碟上的檔案的。

  是以,雖然我們看起來Web伺服器隻是簡單地讀取了硬碟上的檔案,但其實它還是不如我們想象的那麼簡單。不過對于用戶端來說,這一切都是不可知的。例如 Squid,Nginx這樣部署在前端的緩存或反向代理伺服器,它們都不會關心後端Web伺服器是Windows,Linux還是Unix,也不會關心是 IIS,Apache,Lightted甚至是我們自己寫的高效或低劣的Web伺服器。對于浏覽器,爬蟲,或前端負載均衡器來說,它們隻知道TCP/IP 協定,它們隻知道HTTP協定等東西,其他一概不知。

  不過,也有朋友堅持認為“生成靜态頁”來“進行頁面緩存”對SEO有幫助。理由是,“進行頁面緩存”能夠提高網站性能,爬蟲更傾向于通路速度更快的頁面。從這個角度看來,這種說法的确有一定道理。隻是我還是不喜歡這樣的看法,因為這種說法沒有把握事物關鍵。在這裡,SEO的關鍵在于優化網站性能,而生成靜态頁隻是一種手段之一。這并不是适用性最廣的,也并非是最容易實作的。如果您直接把“生成靜态頁”與“SEO”聯系起來,很有可能會對他人造成誤解。

  當然,如果您的思路沒有問題,“靜态頁”三個字的指代也足夠明确,“靜态頁有利于SEO”這個命題毫無疑問是正确的。不過我們現在并沒有讨論一個命題的邏輯是否正确,我們也不必糾纏于一個表達形式是否嚴謹,我們的目的是要說明道理。也正因為如此,老趙才會一遍一遍地寫這麼多内容。也就是說,這幾篇文章的關鍵在于“說清道理”,我們把握它既可。

  最後,老趙再談一下對SEO看法。

  從老趙與各SEO人員的接觸感覺來看,他們總是有各種理由來說明“問題所在”,隻是如果在改進問題之後還是沒有效果的話,他們又可以找出各種理由來告訴你為什麼沒有效果——但是要知道SEO是一個實踐性工作,它的唯一判斷依據便是“效果”,而不是“理論”。SEO的理論很容易掌握,但是如果無法真切提高一個網站在搜尋引擎上的表現,這一切還是白搭。老趙認為,一個好的SEO是需要了解網頁制作,或者說網站開發的基本技術的,至少要有常識,否則基本上就是在扯蛋。老趙曾經接觸過一個“專業”的SEO公司,那裡的“SEO咨詢師”給我留下了深刻的印象——負面印象。其“非專業性”從以下幾個事件中便可見一斑:

  1.還是“靜态頁”的問題。由于把URL變為.html結尾之後并沒有得到明顯的效果,他詢問我們的實作方式。在得知我們使用了URL重寫,而不是在硬碟上放置html檔案時他“驚呼”這種欺騙搜尋引擎的行為是會起到反效果的。他強烈要求我們在硬碟上放置html檔案。這個要求自然遭到了我們的拒絕,原因之一是我們是非動态的網站,很難實作這個需求,但是更重要的是,懂得一點技術的人就知道,Web伺服器的處理方式對于搜尋引擎爬蟲時完全不可見的,我們是否真正放置html檔案與搜尋引擎沒有任何關系。

  2.内容的位置問題。在SEO看法,搜尋引擎會更傾向于把頁面靠前的内容看的更重,而把頁面靠後的内容權值放低。是以那位專業SEO咨詢師指着我們的某張頁面說,這部分内容太靠“下方”,很容易被搜尋引擎忽略。請注意,他說的是“内容在頁面顯示的時候出現在下方”。您覺得這種說法有道理嗎?如今頁面布局往往使用XHTML+CSS的方式,而搜尋引擎隻會關注HTML的内容,而“位置”很大程度上是由CSS,甚至是由JS來控制的。出現在HTML内容前段的内容,在頁面呈現時也可以出現在下方,這也和搜尋引擎沒有任何關系。可惜這一點也解釋了半天。

  3.最後一條可以說是最可笑的。因為SEO效果不好,那位SEO咨詢師覺得隻能“來真的”了,于是向我們索要網站的IIS日志。分析日志對于SEO有些幫助,因為可以看出爬蟲的抓取順序,頻率,甚至結果等等,是以檢視日志的做法本沒有問題。可惜問題在于,對方從MSN上給出一個郵箱,讓我們把過去幾個星期的日志發給他。當看到這個要求的時候,老趙幾乎要破口大罵。從這點可以看出,這位 SEO咨詢師缺少必要的嘗試,他根本不知道一個中小型的網站,每天便要生成幾百兆到幾個G的日志。如此沒有常識,為什麼會有那麼多“成功案例”?

  老趙的部落格(也就是您正在看的這個)在搜尋引擎上的表現也非常糟糕,即使是老趙經常寫作的話題,在Google上也很難找到幾篇文章,排名也不太靠前。如果不使用site:cnblogs.com進行限制的話,幾乎沒有一篇文章是找到我的blog,都是各種地方的轉載。為此我也比較苦惱,咨詢了一些專業搞SEO的朋友,做出一些修改之後還是沒有太大改善。不過我相信那隻是我沒有遇上優秀的SEO人員而已,我的部落格的潛力還遠沒有挖掘到底。

  如果您是一個專業的SEO人員,或者是專業的SEO公司,不妨給我一些SEO看法的建議——如果可以的話,我也不介意在這方面進行一點投資。不過,如果是一些“肮髒”的優化方式就不必了,例如去論壇上貼連結,發垃圾郵件。我也知道這些做法很有效果,但是我不想這樣做。

繼續閱讀