① 勇客互聯網路推廣公司移動端網站優化是怎麼做的
隨著移動互聯網的發展,移動網站優化也是勢在必行,非做不可之事了。
1、雖然移動端的手機網站並不是pc站的簡單過來的移動版本,但是大部分pc端頁面的優化技巧在這里仍然是使用的,最多就是需要考慮一下手機用戶和特殊用戶的體驗需求,所以是沒有必要把移動頁面優化當成一個和pc頁面優化完全不一樣的技術。
2、消費群體定位問題要考慮清楚,頁面內容是否能正常訪問,因此絢麗的flash和js等建議還是慎用為好,一是考慮用戶體驗度問題,而是盡量減少搜索引擎的抓取工作,讓蜘蛛盡可能多的爬行和收錄頁面,同時要注意不要用robots文件禁止搜索引擎蜘蛛抓取CSS、JS和圖片等外部文件,不然蜘蛛會難以判斷頁面布局甚至無法正常訪問內容。
3、網站設計要盡可能簡潔,頁面設計要盡可能方便手機用戶點擊瀏覽,比如字體是否清晰可讀、是否有上下左右滑動頁面、廣告太多讓人厭煩、title不要太長、功能是否簡單易操作、頁面數和頁面大小是否控制到最低、移動網站設計是否夠精簡、網站打開速度是否夠快等等。
4、域名要盡可能簡短易記,大部分手機版網站的域名是pc端網站的二級域名,這樣與傳統網站保持一致更重視用戶信賴確實很好,不過如果是遇到了專門的手機網站的話,最好是起一個簡短易記的域名。
5、網路手機爬蟲的UA並不是spider-mobile,這一點不要誤會了,另外在robots的設置上最好不要有任何限制方便所有搜索引擎抓取。
6、做移動SEO時要更關注地名+主查詢詞這種搜索,因為手機攜帶方便,兼具移動性,在上面搜索吃喝玩樂的用戶數量很大。
7、在做頁面優化細節的時候要注意對於手機網站的首頁或者頻道首頁網頁代碼中的keywords、description最好加上與PC端有所區別的meta標簽和關鍵詞,在每個頁面的關鍵詞及描述像傳統pc端網站一樣,做好針對性填寫工作。這樣對搜索結果的展現以及優化工作都有很大的幫助;要注意減少死鏈的產生,在沒有內容的情況下最好用狀態碼制定,如果內容死鏈希望重定向到首頁可以通過302跳轉,不要使用javascript 跳轉。
② 如何做好移動通信網的網路優化
移動通信近年來發展速度驚人,在市場需求的驅動下,移動網路不斷擴容,網路的規劃也一再隨之調整。建設周期短,發展速度快,前後工期的重疊進行,網路的建設無論在規劃階段以及後續的擴建工程中,均存在著一些質量問題,造成整個通信網路的各種資源不能得到合理的應用,資源大大浪費,還使得通話質量下降,服務水平低,網路運行效率低。
為使得網路資源能夠合理配置和應用,移動通信網路的網路優化工作已經成為移動通信運營商提高服務水平,保障通信質量的重要工作內容。
網路優化工作,就是對整個網路的資源根據需求和發展的情況進行調配,達到合理的運用。同時,對於網路運行中存在的諸如覆蓋不好、話音質量差、掉話、網路擁塞、切換成功率低、未開通某些新功能等問題時,也需要對網路進行優化。因此,網路優化是一個長期的過程,貫穿於網路發展的全過程。 網路優化,不僅對於當前的GSM900MHz網路而言,對於還在發展的GSM1800MHz和CDMA800MH也是同樣重要的。
2 網路優化的內容
網路優化既然是對網路資源的重新調配,那麼,有哪些資源是可以應用的呢?
2.1 網路資源
頻率資源:無線通信的頻率資源是寶貴的,移動通信的頻率資源尤其珍貴,頻率資源包括可用的頻段(900MHz/1800MHz,對運營商而言)、可用的方式(固定、跳頻)、覆蓋的區域、單站的頻率覆蓋方式、相鄰小區的頻率復用方式等。
地域資源:移動通信網要完成網路覆蓋,覆蓋的地域非常重要,合理的分布站址無疑可以取得更好的覆蓋效果,即使是經濟不發達地區,有時也要有相應的投入。
業務資源:移動通信網是隨業務的發展而設立的,只有滿足不斷變化的業務需求,才能充分利用好網路資源,網路中的移動業務,在不同的區域分布是不均勻,需求也不一樣。網路的設置要充分吸收各種業務量,尤其是對於新增業務如簡訊息、信息廣播、數據業務等都需要合理的安排。
③ 手機移動數據網速慢怎麼解決
手機移動數據網速慢的解決方法有:更改虛拿網路設置、清理緩存和數據、使用VPN服務。
1、更改網路設置:有時候,手機移動數據網速慢是因為網路設置不當導致的。我們可以嘗試更改網路設置來提高網速。這些設置盯雀可能因手機品牌不同而有所不同,但總的來說,通過更改網路設置,可以大大提高手機移動數據網速。
手機移動數據的原理解析
移動網路是手機移動數據的基礎。移動網路可以分為2G、3G、4G、5G等多種類型。在移動網路中,手機通過基站與網路連接,並通過網路獲取數據。不同的移動網路速度不同,其中5G網路速度最快,可以實現更快的數據傳輸。
互聯網是手機移動數據的最終目的地。手機通過移動網路連接互聯網,並通過互聯網獲取數據。在互聯網中,數據傳輸可以通過HTTP、FTP、SMTP等協議來實現。互聯網的快速發展和普及,為手機移動數據的發展提供了更加廣闊的空間。
④ 手機移動數據網路慢,怎麼辦
首先,你的手機卡是4G的嘛,如果不是可以升級到4G。
然後,查看你的手機是不是比較卡,如果是可以適當清理手機內存。手機卡、慢可能是因為下載緩存的東西太答猜薯多了,內存不足,運行不過來,你可以使用騰訊手機管家清理加速,它有專門的一鍵優化功能,按一下就給你的手機清理加速。不過你放心它只兆並會清理你系統中不必要的數據釋放空間,不會刪除你的重要信息。還有記得平時用過手機都用騰訊手機管家關閉一下後台程序,這樣也可以很有效的給你的手機加速。
最後,檢查所在地的清者信號情況,如果本地信號不強可以換個地方再試。
⑤ 移動網路優化實踐
網路優化對於App產品的用戶體驗至關重要,與公司的運營和營收息息相關。這里列舉兩個公開的數據:
「 頁面載入超過3秒,57%的用戶會離開。 」
「 Amazon頁面載入延長1秒,一年就會減少16億美金營收。 」
首先是網路不可用的問題。主要由以下幾種原因導致:
GFW的攔截,原因你懂的。
DNS的劫持,埠的意外封禁等。
偏遠地區網路基礎設施比較差。
其次是網路載入時間長。原因包括: * 移動設備出於省電的目的,發出網路請求前需要先預熱通信晶元。 * 網路請求需要跨網路運營商,物理路徑長。 * HTTP請求是基於Socket設計的,請叢嫌求發起之前會經歷三次握手,斷開時又會進行四次揮手滲辯手。
最後是HTTP協議的數據安全問題。原因有: * HTTP協議的數據容易被抓包。Post包體數據經過加密能夠避免泄露,但協議中的URL和header部分還是會暴露給抓包軟體。HTTPS也面臨相似的問題。 * 運營商數據惡意篡改嚴重。如下圖中,App的網頁中就被運營商插入了廣告。
3
面對上述網路問題,我們首先在HTTP短連請求中進行了一些優化嘗試。
1. 告別 DNS,直接使用 IP 地址
如果是首次發送基於 HTTP 協議的網路服務,第一件事就是進行 DNS 域名解析,我們統計過 DNS 解析成功率只有 98%,剩下 2% 是解析失敗或者運營商 DNS 劫持(Local DNS 返回了非源站 IP 地址),同時 DNS 解析在 3G 下耗時 200 毫秒左右,4G 也有 100 毫秒左右,延遲明顯。我們基於 TCP 連接,直接跳過了 DNS 解析階段,使用內置 IP 列表的方式進行網路連接。
App 內置了一組 Server IP 列表,同時每個 IP 具備權重。每次建立新連接,會選擇權重最高的 IP 地址進行連接。App 啟動時,IP 列表的所有權重是相同的,此時會啟動一組 Ping 的操作,根據 Ping 值的延遲時間來計算 IP 的權重,這么做的原理是 Ping 值越小的 IP 地址,連接後的網路傳輸延遲也應該相對更小。業界也有使用 HTTP DNS 方式來解決 DNS 劫持問題,同時返回最合適用戶網路的 Server IP。然而 HTTP DNS 的開發和部署需要不小的開發成本,我們目前沒有使用。
內置 Server IP 列表也會被更新,每次 App 啟動後會有個 Mobile Config 服務(支持 TCP 和 HTTP 兩種網路類型服務)更新 Server IP 列表,同時支持不同產品線的 Server IP 列表更新。因此,傳統 DNS 解析能夠解決多 IDC 導流的功能也可以通過此方法解決。
2. Socket 連接優化,減少連灶則接時間
和 HTTP 協議中的 Keepalive 特性一樣,最直接減少網路服務時間的優化手段就是保持長連接。每次 TCP 三次握手連接需要耗費客戶端和服務端各一個 RTT(Round trip time)時間才能完成,就意味著 100-300 毫秒的延遲;TCP 協議自身應對網路擁塞的 Slow Start 機制也會影響新連接的傳輸性能。
App 使用了長連接池的方式來使用長連接,長連接池中維護了多個保持和服務端的 TCP 連接,每次網路服務發起後會從長連接池中獲取一個空閑長連接,完成網路服務後再將該 TCP 連接放回長連接池。我們沒有在單個 TCP 連接上實現 Pipeline 和 Multiplexing 機制,而是採用最簡單的 FIFO 機制,原因有二:
簡化 Mobile Gateway 的服務處理邏輯,減少開發成本;
在服務端同時返回多個響應時,如果某個響應報文非常大,使用多個長連接方式可以加快接收服務響應報文速度。
如果發起網路服務時長連接池中的 TCP 連接都正在被佔用,或者 TCP 長連接的網路服務失敗,則會發起一個 TCP 短連接實現網路服務。這里長連接和短連接的區別僅僅是服務完成後是否直接關閉這個 TCP 連接。
附: Pipeline 和 Multiplexing 是有區別的,如 HTTP/1.1 支持 Pipeline,客戶端能否同時發送多個請求,但是服務端返回響應時也要按照請求的發送次序來返回響應;SPDY 和 HTTP/2 協議支持 Multiplexing,即支持響應報文的亂序返回,發送請求和接收響應互不幹擾,因此避免了 HTTP/1.1 Pipeline 也沒能完全解決的 Head of line blocking 問題。
3. 弱網和網路抖動優化
App 引入了網路質量參數,通過網路類型和端到端 Ping 值進行計算,根據不同的網路質量改變網路服務策略:
調整長連接池個數:例如在 2G/2.5G Egde 網路下,會減少長連接池個數為 1(運營商會限制單個目標 IP 的 TCP 連接個數);WIFI 網路下可以增加長連接池個數等機制。
動態調整 TCP connection、write、read 的超時時間。
網路類型切換時,例如 WIFI 和移動網路、4G/3G 切換至 2G 時,客戶端 IP 地址會發生變化,已經連接上的 TCP Socket 註定已經失效(每個 Socket 對應一個四元組:源 IP、源 Port、目標 IP、目標 Port),此時會自動關閉所有空閑長連接,現有網路服務也會根據狀態自動重試。
4. 數據格式優化,減少數據傳輸量和序列化時間
傳輸數據量越小,在相同 TCP 連接上的傳輸時間越短。攜程 App 曾經使用自行設計的一套數據格式,後來和 Google ProtocolBuffer 對比後發現,特定數據類型下數據包大小會降低 20-30%,序列化和反序列化時間可以降低 10-20%,因此目前核心服務都在逐步遷移到到 ProtocolBuffer 格式。另外 Facebook 曾分享過他們使用 FlatBuffer 數據格式 提高性能的實踐,我們分析後不太適合攜程的業務場景因而沒有使用。
5. 引入重試機制,提升網路服務成功率
受 TCP 協議重傳機制來保證可靠傳輸的機制啟發,我們在應用層面也引入了重試機制來提高網路服務成功率。我們發現 90% 以上的的網路服務失敗都是由於網路連接失敗,此時再次重試是有機會連接成功並完成服務的;同時我們發現前面提到的網路服務生命周期處於 1 建立連接、序列化網路請求報文、發送網路請求這三個階段失敗時,都是可以自動重試的,因為我們可以確信請求還沒有達到服務端進行處理,不會產生冪等性問題(如果存在冪等性問題,會出現重復訂單等情況)。當網路服務需要重試時,會使用短連接進行補償,而不再使用長連接。
實現了上述機制後,攜程 App 網路服務成功率由原先的 95.3%+ 提升為如今的 99.5%+(這里的服務成功率是指端到端服務成功率,即客戶端採集的服務成功數除以請求總量計算的,並且不區分當前網路狀況),效果顯著。
6. 其他網路服務機制 & Tricks
攜程 App 也實現了其他一些網路服務機制方便業務開發,如網路服務優先順序機制,高優先順序服務優先使用長連接,低優先順序服務默認使用短連接;網路服務依賴機制,根據依賴關系自動發起或取消網路服務,例如主服務失敗時,子服務自動取消。
開發過程中我們也發現一些移動平台上的 TCP Socket 開發 tricks:
iOS 平台上的原生 Socket 介面創建連接並不會激活移動網路,這里原生 Socket 介面是指 POSIX Socket 介面,必須使用 CFSocket 或者再上層的網路介面嘗試網路連接時才會激活網路。因此攜程 App 啟動時會優先激活注冊一些第三方 SDK 以及發送 HTTP 請求來激活移動網路。
合理設置 Socket 的幾個參數:SO_KEEPALIVE 參數確保 TCP 連接保持(註:此 KeepAlive 是 TCP 中的屬性,和 HTTP 的 KeepAlive 是兩個場景概念),SO_NOSIGPIPE 參數關閉 SIGPIPE 事件,TCP_NODELAY 參數關閉 TCP Nagle 演算法的影響。
由於 iOS 要求支持 IPv6-Only 網路,因此使用原生 Socket 必須支持 IPv6。
如果使用 select 來處理 nonblocking IO 操作,確保正確處理不同的返回值和超時參數。
保持 TCP 長連接可用性的心跳機制:對於非 IM 類應用而言,心跳機制的作用不大,因為用戶會不斷觸發請求去使用 TCP 連接,尤其在攜程業務場景下,通過數據統計發現使用心跳與否對服務耗時和成功率影響極小,因此目前已經關閉心跳機制。原先的心跳機制是 TCP 長連接池中的空閑 TCP 連接每 60 秒發送一個心跳包到 Gateway,Gateway 返回一個心跳響應包,從而讓雙方確認 TCP 連接有效。
Hybrid 網路服務優化
攜程 App 中有相當比例的業務是使用 Hybrid 技術實現的,運行在 WebView 環境中,其中的所有網路服務(HTTP 請求)都是由系統控制的,我們無法掌控,也就無法進行優化,其端到端服務成功率也僅有 97% 左右(註:這里指頁面中業務邏輯發送的網路服務請求,而非靜態資源請求)。
我們採用了名為『TCP Tunnel for Hybrid』的技術方案來優化 Hybrid 網路服務,和傳統 HTTP 加速產品的方法不同,我們沒有採用攔截 HTTP 請求再轉發的方式,而是在攜程 Hybrid 框架中的網路服務層進行自動切換。
如圖所示,該技術方案的流程如下:
如果 App 支持 TCP Tunnel for Hybrid,Hybrid 業務在發網路服務時,會通過 Hybrid 介面轉發至 App Native 層的 TCP 網路通訊層,該模塊會封裝這個 HTTP 請求,作為 TCP 網路服務的 Payload 轉發到 TCP Gateway;
TCP Gateway 會根據服務號判斷出是 Hybrid 轉發服務,解包後將 Payload 直接轉發至 HTTP Gateway,此 HTTP 請求對 HTTP Gateway 是透明的,HTTP Gateway 無需區分是 App 直接發來的還是 TCP Gateway 轉發來的 HTTP 請求;
後端業務服務處理完成後,HTTP 響應會經 HTTP Gateway 返回給 TCP Gateway,TCP Gateway 將此 HTTP 響應作為 Payload 返回給 App 的 TCP 網路通訊層;
TCP 網路通訊層會再將該 Payload 反序列化後返回給 Hybrid 框架,最終非同步回調給 Hybrid 業務調用方。整個過程對於 Hybrid 業務調用方也是透明的,它並不知道 TCP Tunnel 的存在。
採用該技術方案後,攜程 App 中 Hybrid 業務的網路服務成功率提升至 99% 以上,平均耗時下降了 30%。
海外網路服務優化
攜程目前沒有部署海外 IDC,海外用戶在使用 App 時需要訪問位於國內的 IDC,服務平均耗時明顯高於國內用戶。我們採用了名為『TCP Bypass for Oversea』的技術方案來優化海外網路服務性能,主要是使用了 Akamai 的海外專屬網路通道,同時在攜程國內 IDC 部署了局端設備,使用專用加速通道的方式來提升海外用戶體驗。
海外用戶啟動 App 後先通過 Akamai 定製域名獲取 Server IP,所有網路服務優先走 Akamai 通道;如果 Akamai 通道的網路服務失敗並且重試機制生效時,會改走傳統 Internet 通道進行重試。相比只用傳統 Internet 通道,在保持網路服務成功率不變的情況下,使用 Akamai 通道 Bypass 技術後平均服務耗時下降了 33%。
其他網路協議探討
過去兩年我們的網路服務優化工作都是基於 TCP 協議實現的,基本達到了優化目標。不過這兩年來新的應用層網路協議 SPDY 和 HTTP/2 逐步邁入主流,基於 UDP 的 QUIC 協議看起來也非常有趣,值得跟進調研。
SPDY & HTTP/2
SPDY 是 Google 基於 TCP 開發的網路應用層協議,目前已經停止開發,轉向支持基於 SPDY 成果設計的 HTTP/2 協議,HTTP/2 協議的核心改進其實就是針對 HTTP/1.x 中影響延遲性能的痛點進行優化:
Header 壓縮:壓縮冗餘的 HTTP 請求和響應 Header。
支持 Multiplexing:支持一個 TCP 連接上同時實現多個請求和響應。
保持長連接(比 HTTP/1.x 更徹底):減少網路連接時間。
支持推送:可以由服務端主動推送數據到客戶端。
官方性能測試結果顯示使用 SPDY 或者 HTTP/2 的頁面載入時間減少 30% 左右,不過這是針對網頁的測試結果,對於 App 中的網路服務,具體優化效果我們還在進行內部測試,不過其優化手段看和目前我們使用 TCP 協議的優化手段類似,因此性能優化效果可能不會很顯著。
QUIC
QUIC 是 Google 基於 UDP 開發的應用層協議,UDP 協議無需連接,不存在重傳機制,因此應用層需要保證服務的可靠性。目前國內騰訊有針對弱網路嘗試過 QUIC 協議,我們也在進行測試,最終是否會採用還需要看測試的結果。
綜述
技術只是手段,最終還是要反映在業務效果上。我們已經實現除靜態資源等需要訪問 CDN 的網路請求外,其他 App 網路服務使用統一的 TCP 通道,從而具備更好的性能調優和業務監控能力。攜程目前基於 TCP 協議的各種 App 網路服務優化,也是各種技術方案的平衡,雖然目前 HTTP/2 等新協議逐步成熟,但是 TCP 協議自身的靈活性支持有針對性的性能優化,還是具備其特別的優勢,希望我們的實踐總結能對國內無線技術從業者有一些借鑒價值。