網頁速度分析 && 網頁頭文件解析 && 性能優化 && httpwatch工具使用

一:網頁整體 分析

1:總用時

2:未知

3:總下載數據量

4:總上傳數據量

5:未知

6:DNS 查詢次數

7:TCP查詢次數

二:速度分析

1:阻塞時長 訪問請求前的所用時間,比如等待有效TCP連接。瀏覽器TCP的併發數有限。

2:connect TCP連接時間

3:get/post 時長

4:服務器響應時長

5:下載時長

6:第一個數據包達到時長 6=2+3+4

7:整個網絡過程時長 7=6+5

 

三:HTTP報頭分析

   

1:左邊分析

accept-Encoding

也就是說當服務器返回的是用gzip或deflate協議進行壓縮過的內容, 瀏覽器將自動的進行解壓縮 . 這樣做可以節省大量的網絡帶寬,負面影響是加重了服務器的負擔。

connect: keep-active 還有close

   resin 處理流程     

    <!-- Configures the socket timeout -->
      <socket-timeout>65s</socket-timeout>

      <!-- Configures the keepalive -->
      <keepalive-max>32</keepalive-max>
      <keepalive-timeout>5s</keepalive-timeout>

   1.處理完成http請求
   2.等待keepalive-timeout秒,如果在這個等待中收到後繼的http請求,則跳轉到1
   3.進入keepalive等待過程,超時時間是socket-timeout秒。如果有後繼請求,則跳轉到1
   4.線程釋放到線程池

TCP連接方式 增加keep-active值可以減少TCP連接次數,DNS查詢次數。

2:右邊分析

max-age:總有效時長(s) 源服務器設置。

Age: 已過時間(s) 這個值CDN計算出的。

瀏覽器會根據max-age age ,expires 計算緩存是否有效。max-age,age級別高於expires,expires是以時間點爲基準,時間點在一些情況下不準(本機的系統設置等)。

Cache-crontrol max-age 最長的有效時間 有服務器端設置 CDN不修改

Date: CDN或者瀏覽器從源站讀取的時間(服務器的時間)

Etag:

服務器首先產生ETag,服務器可在稍後使用它來判斷頁面是否已經被修改。本質上,客戶端通過將該記號傳回服務器要求服務器驗證其(客戶端)緩存。 

  其過程如下:

  客戶端請求一個頁面(A)。 服務器返回頁面A,並在給A加上一個ETag。 客戶端展現該頁面,並將頁面連同ETag一起緩存。 客戶再次請求頁面A,並將上次請求時服務器返回的ETag一起傳遞給服務器。 服務器檢查該ETag,並判斷出該頁面自上次客戶端請求之後還未被修改,直接返回響應304(未修改——Not Modified)和一個空的響應體。

etag的優先級高於 not modified

區別 etag 用於標示 文件本身的一些描述信息,可以自己寫算法實現。

如:apache2 中定義的是 3段 inode-size-timestamp

inode 存儲文件的 類型,所有者,組,訪問模式

size 存儲文件的大小

timestamp 存儲的是文件內容被修改的時間戳

什麼情況下使用 etag:

1:一些文件也許會週期性的更改,但是他的內容並不改變(僅僅改變的修改時間),這個時候我們並不希望客戶端認爲這個文件被修改了,而重新GET。

2:某些文件修改非常頻繁,比如在秒以下的時間內進行修改,(比方說1s內修改了N次),If-Modified-Since能檢查到的粒度是s級的。if-non-math的顆粒是SS級的。

爲提高訪問速度,提高性能,最好把etag關閉 apache 方法:在配置文件中加入 FileETag none

 

Expires:源站設置的的實效時間點

Last-Modified :文件最後一次修改時間

X-Cache :表示你的 http request 是由 proxy server 回的

四:性能優化

1:減少DNS查詢次數,響應時間

增加TTL值 time-to-live 值 緩存時間。有域名解析設置,告知域名解析服務器緩存多長時間,域名解析服務器,通過換算出有效的緩存時長,告知瀏覽器。

增加keep-alive 時長 TCP連接時間長 DNS不在查詢,TCP不用再重新連接。

配置響應速度快的DNS服務器。

IE4.x以上的緩存機制 默認緩存30分鐘。如果服務器設置的TTL<30分鐘,將以30分鐘爲準。

參考:support.microsoft.com/kb/263558/zh-cn

註冊表地址 HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings

DnsCacheTimeout 默認值 30分鐘

如果IE緩存實效後查找windows系統自身的DNS client 緩存。

瀏覽器重啓會失效,超過瀏覽器的DNS記錄的數量會失效。

ServerInfoTimeOut 默認值爲2分鐘,即:如果至少每2分鐘重用一個主機名,將超過30鐘不需要DNS查詢。

windows DNS client 系統服務

緩存的時長在與 DNS 資源記錄相關聯的生存時間 (TTL) 中指定。

cmd --》 ipconfig/displaydns 查看緩存的DNS記錄   ipconfig/flushdns 刷新緩存使其失效

註冊表 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/DNSCache/Parameters

  在註冊表中找到並單擊以下項:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Dnscache/Parameters
  在“編輯”菜單上,指向“新建”,單擊“DWORD 值”,然後添加下列註冊表值:

數值名稱:MaxCacheTtl 
數據類型: REG_DWORD
默認值:86400 秒(1天)
數值數據:如果您將客戶端的 DNS 緩存中的最大 TTL 值降低爲 1 秒,則客戶端 DNS 緩存看起來已被禁用

以後還需要繼續研究,不太清楚IE,DNS client緩存的機制,我測試都是按TTL走的

2:增加單個TCP的使用時長,增加TCP併發連接數,減少TCP連接響應時間

增加keep-alive值可以增加單個TCP的使用時長。

增加併發數,可以更多的請求分佈式的資源數據,加快下載,顯示等速度。

分佈式部署服務器,做最後一公里原則,選擇優質帶寬。

IE: 註冊表信息KeepAliveTimeout 默認爲1分鐘,即TCP連接空閒超過1分鐘就斷開,未斷開的情況下DNS不再查詢。

3:減少服務器響應時間

部署高配服務器,做系統集羣,分佈式系統等,優化軟件(數據庫緩存,頁面靜態化等)

4:減少下載時長

優質帶寬資源,同2. 網頁組件壓縮gzip等,網頁組件製作要求。

5:減少頁面的顯示加載時長

將頁面按DIV+table結構製作,實現部分加載。

做網頁組件(如:圖片等) 客戶端緩存,從本地讀取數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章