365網站建設網

一鍵撥打熱線服務

17363509326

網站技術分析報告之——去哪兒
正文 您當前的位置:首頁建站知識建站經驗網站技術分析報告之——去哪兒

網站技術分析報告之——去哪兒

2013-01-04 23:03:33 編輯:

前言

自從上一篇“ 

前幾次對去哪兒的源碼感興趣的是在一次我需要航班信息的時候,那段時間我對去哪兒的代碼有過一些時間的分析,并且成功地抓取去哪兒的航班和酒店數 據,僅作學習之用,請去哪兒不要找我了,呵呵。

我想這次分析要稍為嚴謹一丁點兒,要不然會有較真的人要罵我。我準備從代碼質量、Javascript、CSS、url及網址結構、廣告、圖片等多 個方面進行分析。

架構試探

雖然只是分析了前臺的代碼,但所謂管中窺豹可見一斑,根據我以前對qunar的代碼分析,**從這些前臺的代碼,我們也可以看到系統結構的一些端倪 的。去哪兒整個網站的重點是在搜索,我想他們是有一個爬蟲以及和各大航空公司/旅游代理網站的接口在后臺來做數據的采集,這個是重點。然后對采集回來的數 據進行分析之后,定時生成JSON靜態數據,前臺調用采用Ajax的模式,以提高響應速度。我覺得去哪兒這種方式非常好,因為數據都是定時更新的,把每個 城市的數據都生成靜態的json,特別是一些不常更新的數據,比如航空公司,酒店,航班信息等,有利于提高響應速度和降低服務器的壓力。數據和實現分離也 很**,自己的網站通過WebAPI讀取,有利于產品化,以及方便與第三方合作,實現公司靈活快速地根據實際情況調整產品。

\

我自己估計的 Qunar大體架構

這樣做同時也有缺點,因為你的數據非常的干凈,別人要取就很容易了,反正我是取過去哪兒很干凈的數據,干凈而透明,呵呵。可能是去哪兒覺得這些數據 都是比較實時的,你就算拿到這些數據也沒有用。但是我覺得盡管如此,還是應該在服務器加一些限制,對請求數量進行限制,或者加一些別的限制,這樣有利于防 止機器請求,提高服務器的可用率。

|||

首頁分析

 

首先還是來看首頁,我覺得去哪兒的網站是優化得比較好的網站之一了,去哪兒的首頁一共有114.9k,共41個請求數,個人認為請求數有些過多(主要是廣告部分),可以適當降低請求數。

靜態文件

去哪兒的靜態文件似乎并非統一放在前幾立的服務器上,而是不同的頻道有不同的靜態內容服務器(我指的是邏輯服務器),像source.qunar.com,hotel.qunar.com等等,這樣做有好處有壞處,好處是各項目組(我認為qunar不同頻道是同不同的項目組前幾立負責的,這樣有利于產品化)管各自的靜態文件就ok了,壞處是不利于統一管理。我建議可以這樣,把靜態文件統一部署到一臺/組服務器,各頻道可以采用不同的邏輯服務器放置靜態文件。這樣便于統一管理,特別是去哪兒JS靜態文件比較多,便于統一做CDN,因為動態內容和靜態文件采用的CDN技術不一樣,價格也不一樣,有利于節省成本。

圖片去哪兒首頁的圖片非常少,少得讓人吃驚,但你并不覺得這個網站太難看,反而覺得很清爽,我認為圖片應該盡可能少,圖片只是在文字不能傳達某個意思的時候才使用圖片,這樣可以起到畫龍占睛的作用,也有利于SEO,當然圖片壁紙站除外。

壓縮

服務器上有啟用Gzip壓縮,有利于減小傳輸量,特別是對于去哪兒采用定時生成JSON靜態數據的情況下,Gzip更能發揮作用。同時CSS文件,也有采用去注釋和空行的壓縮方式。但是我不明白的是,為什么有些javascript卻沒有經過壓縮呢?例如在文件:http://hotel.qunar.com/scripts/hotel/recommandHotels.js?15182155276,不僅可以看到換行,還可以看到明顯的注釋

數據與實現分離

實際上就是指CSS/JS和Html以及數據,有沒有很好地分離,我覺得這方面,去哪兒還是做得不錯,首頁的HTML代碼非常輕巧,但有點我不明白,為什么去哪兒并未完全采用Div + CSS,而在首頁還摻雜有Table呢,我覺得去哪兒的首頁并沒有需要用到Table的地方,完全可以全部采用Div+CSS進行布局。如果我沒估計錯的話,去哪兒的首頁應該也是自動生成靜態頁面,并且是采用xml+xslt或者類似的方式,因為它源代碼的空行方式很類似于xml+xslt的結果。

廣告

相比去哪兒的版面來說,首頁廣告是非常之多,我覺得可能比新浪的廣告比例還要高,但你完全沒有不舒服的感覺。我想一方面,是去哪兒的廣告內容和網站主題很匹配,主要是機票和酒店類的廣告,另一方面,是由于廣告位置以及廣告與網站的溶入度非常高,說得白一點,就是去哪兒給廣告穿了一件迷彩服,一般人以為不是廣告,實際上他是廣告。

我認為去哪兒的廣告點擊率應該很高,起碼不低。首先,在顏色的配置上,去哪兒的廣告顏色與整個頁面一致,廣告沒有太明顯的標識,這樣有利于用戶點擊廣告,特別是對于對網站不熟悉的用戶,很容易受這些廣告的誘惑去點擊廣告。但從另一個角度來說,廣告主所得到的回報率可能會偏少。從我的觀察來發現,越是菜鳥的用戶,越容易點廣告,但點完廣告帶來的價值偏少,而成熟的用戶點擊廣告都是比較理性,給廣告主帶來的回報率會比較高。

URL/域名

去哪兒每個頻道都有一個二級域名,并且還有其它更多的二級域名,一方面,二級域名有得SEO和用戶記憶,但過多的域名,也難于管理。我不覺得目前去哪兒需要這么多的二級域名,縮少到5-8個即可。

總結

我個人認為,去哪兒的技術上應該是比較不錯的,像一些細節的地方都有作處理,但是也有些需要改正地方,如沒有防止數據采集(或者靈敏度太低),就算不擔心數據被利用,也應該考慮到對服務器的壓力;JS/CSS文件過于分散,JS代碼沒有進行清理與壓縮(不是指gzip);HTML代碼還可以更加簡潔一些,有些代碼完全是很無聊的嵌套,可以再行精簡,加快瀏覽器的解析。

后記

上面的分析報告是在去Qcon大會之前寫成的,為了保證它的原汁原味,我沒有作任何修改。我記得在Qcon大會上的吳永強說他們的數據是實時抓取的,就這一點,我談談我的看法,我認為實時抓取是不可能的,雖然機票這個東西價格變化很快,但肯定不可能做到實時抓取。原因如下:

前幾、如果是全部都實時抓取,去哪兒的帶寬和服務器都受不了,就算做到了,也不經濟

**、以去哪兒每天100萬以上的訪問量,如果是實時抓取數據,被抓的網站受不了

我認為比較可行的辦法是這樣的,去哪兒抓取的網站應該分為兩種,即合作伙伴和非合作伙伴,合伙伙伴比較好說了,他們可以提供API接口,這部分的機票信息肯定是實時的。另一種是非合作伙伴,這些網站應該有一個緩存策略,根據去哪兒以往去這些網站抓取的數據分析他們機票的更新速度來確定緩存失效時間。去哪兒有一個爬蟲根據更新策略把數據抓到緩存中,這樣用戶在請求的時候,實際上是在讀這個緩存(生成JSON數據)。不知道去哪兒現在是不是這樣的方法呢?

網站技術分析報告之——去哪兒,希望對您有用。

查看更多建站經驗技術網站

[來源:] [日期:2013-01-04] [熱度:瀏覽次數:0]
玖玖爱在线视频精品39