關(guān)于網(wǎng)頁靜態(tài)化及SEO問題的一些補充
我們還是先來討論一下,什么叫做“靜態(tài)頁”。有朋友說,放在硬盤上的htm或html文件便是一種靜態(tài)頁,Web服務器不需要做額外的處理,直接讀取文件內(nèi)容并輸出就可以了,而這樣的靜態(tài)文件對于SEO是有幫助的。至于理由,是搜索引擎會對html結(jié)尾的文件給更好的權(quán)值(這好像還是結(jié)論,不是理由),而這是“常識”,“了解一點SEO的人都知道這個”,“人們普遍在使用的做法”,因此“它一定是正確的”。不過其實Google并不這么認為,百度倒沒有給出專業(yè)說法。
當然,我們已經(jīng)重復強調(diào),但還是需要不斷明確的一點是,即使搜索引擎對于“靜態(tài)頁”有更好的傾向性,那也是因為其“URL樣式”,而不是“在硬盤上放置了一個html文件”。請求方(也就是爬蟲)只是向服務器端發(fā)送一個URL,并獲取服務器端給出的內(nèi)容。它不會關(guān)心,也無法了解服務器端究竟是如何得到頁面內(nèi)容的,對于客戶端來說,世界上沒有“靜態(tài)”或“動態(tài)”頁面之分。有些朋友可能還是會說“不會啊,html就是靜態(tài)頁面,像aspx之類的就是動態(tài)頁面,前者不需要在Web服務器上運算,后者需要”。
真是這樣的嗎?并非如此,因為html文件也是需要Web服務器來運算的。例如,您請求一個html文件,Web服務器至少做了幾件事情:
如果請求包含緩存信息,那么處理緩存狀態(tài)。
根據(jù)URL定位到磁盤上的文件。
進行用戶認證和授權(quán)(如,是否匿名?)。
判斷是否有權(quán)限讀取。
讀取文件。
根據(jù)文件類型設置MIME的值。
根據(jù)文件最后修改日期設置Last-Modified值。
根據(jù)文件內(nèi)容及其他狀態(tài)設置其E-Tag值。
如果文件內(nèi)部有include標記,那么讀取另一個文件填充進來。
看看,處理一個文件需要多少“動態(tài)運算”啊,這些可都是在Web服務器(如IIS)加載一個html所做的事情。如果您想要觀察這些過程,可以閱讀一些Web服務器的源代碼,或者去觀察一下ASP.NET中System.Web.StaticFileHandler類所做的事情,它也體現(xiàn)了Web服務器處理html時的關(guān)鍵之處。事實上,如果您在IIS中將html配置給ASP.NET ISAPI的話,或者使用VS自帶的Web服務器,最后便是由StaticFileHandler來輸出硬盤上的文件的。
所以,雖然我們看起來Web服務器只是簡單地讀取了硬盤上的文件,但其實它還是不如我們想象的那么簡單。不過對于客戶端來說,這一切都是不可知的。例如Squid,Nginx這樣部署在前端的緩存或反向代理服務器,它們都不會關(guān)心后端Web服務器是Windows,Linux還是Unix,也不會關(guān)心是IIS,Apache,Lightted甚至是我們自己寫的高效或低劣的Web服務器。對于瀏覽器,爬蟲,或前端負載均衡器來說,它們只知道TCP/IP協(xié)議,它們只知道HTTP協(xié)議等東西,其他一概不知。
不過,也有朋友堅持認為“生成靜態(tài)頁”來“進行頁面緩存”對SEO有幫助。理由是,“進行頁面緩存”能夠提高網(wǎng)站性能,爬蟲更傾向于訪問速度更快的頁面。從這個角度看來,這種說法的確有一定道理。只是我還是不喜歡這樣的看法,因為這種說法沒有把握事物關(guān)鍵。在這里,SEO的關(guān)鍵在于優(yōu)化網(wǎng)站性能,而生成靜態(tài)頁只是一種手段之一。這并不是適用性最廣的,也并非是最容易實現(xiàn)的。如果您直接把“生成靜態(tài)頁”與“SEO”聯(lián)系起來,很有可能會對他人造成誤解。
當然,如果您的思路沒有問題,“靜態(tài)頁”三個字的指代也足夠明確,“靜態(tài)頁有利于SEO”這個命題毫無疑問是正確的。不過我們現(xiàn)在并沒有討論一個命題的邏輯是否正確,我們也不必糾纏于一個表達形式是否嚴謹,我們的目的是要說明道理。也正因為如此,老趙才會一遍一遍地寫這么多內(nèi)容。也就是說,這幾篇文章的關(guān)鍵在于“說清道理”,我們把握它既可。
最后,老趙再談一下對SEO這個工作的看法。
seo
從老趙與各SEO人員的接觸感覺來看,他們總是有各種理由來說明“問題所在”,只是如果在改進問題之后還是沒有效果的話,他們又可以找出各種理由來告訴你為什么沒有效果——但是要知道SEO是一個實踐性工作,它的唯一判斷依據(jù)便是“效果”,而不是“理論”。SEO的理論很容易掌握,但是如果無法真切提高一個網(wǎng)站在搜索引擎上的表現(xiàn),這一切還是白搭。老趙認為,一個好的SEO是需要了解網(wǎng)頁制作,或者說網(wǎng)站開發(fā)的基本技術(shù)的,至少要有常識,否則基本上就是在扯蛋。老趙曾經(jīng)接觸過一個“專業(yè)”的SEO公司,那里的“SEO咨詢師”給我留下了深刻的印象——負面印象。其“非專業(yè)性”從以下幾個事件中便可見一斑:
還是“靜態(tài)頁”的問題。由于把URL變?yōu)?html結(jié)尾之后并沒有得到明顯的效果,他詢問我們的實現(xiàn)方式。在得知我們使用了URL重寫,而不是在硬盤上放置html文件時他“驚呼”這種欺騙搜索引擎的行為是會起到反效果的。他強烈要求我們在硬盤上放置html文件。這個要求自然遭到了我們的拒絕,原因之一是我們是非常動態(tài)的網(wǎng)站,很難實現(xiàn)這個需求,但是更重要的是,懂得一點技術(shù)的人就知道,Web服務器的處理方式對于搜索引擎爬蟲時完全不可見的,我們是否真正放置html文件與搜索引擎沒有任何關(guān)系。
內(nèi)容的位置問題。在SEO界有種說法是,搜索引擎會更傾向于把頁面靠前的內(nèi)容看的更重,而把頁面靠后的內(nèi)容權(quán)值放低。因此那位專業(yè)SEO咨詢師指著我們的某張頁面說,這部分內(nèi)容太靠“下方”,很容易被搜索引擎忽略。請注意,他說的是“內(nèi)容在頁面顯示的時候出現(xiàn)在下方”。您覺得這種說法有道理嗎?如今頁面布局往往使用XHTML+CSS的方式,而搜索引擎只會關(guān)注HTML的內(nèi)容,而“位置”很大程度上是由CSS,甚至是由JS來控制的。出現(xiàn)在HTML內(nèi)容前段的內(nèi)容,在頁面呈現(xiàn)時也可以出現(xiàn)在下方,這也和搜索引擎沒有任何關(guān)系。可惜這一點也解釋了半天。
最后一條可以說是最可笑的。因為SEO效果不好,那位SEO咨詢師覺得只能“來真的”了,于是向我們索要網(wǎng)站的IIS日志。分析日志對于SEO有些幫助,因為可以看出爬蟲的抓取順序,頻率,甚至結(jié)果等等,因此查看日志的做法本沒有問題。可惜問題在于,對方從MSN上給出一個郵箱,讓我們把過去幾個星期的日志發(fā)給他。當看到這個要求的時候,老趙幾乎要破口大罵。從這點可以看出,這位SEO咨詢師缺少必要的常識,他根本不知道一個中小型的網(wǎng)站,每天便要生成幾百兆到幾個G的日志。如此沒有常識,為什么會有那么多“成功案例”?