1. 程式人生 > >泰國試管嬰兒一般多少錢

泰國試管嬰兒一般多少錢

泰國試管嬰兒█微信:138-0226-9370██████代孕包成功電詢顧問,代孕包男孩,供卵代孕,三代試管嬰兒選性別,供卵試管嬰兒,十年老品牌代孕公司,

響應消除所有的網路延遲,並避免資料傳輸的資料開銷。 為了實現這一目標,HTTP規範允許伺服器返回多個不同的快取控制指令來控制如何,以及多長時間可以通過瀏覽器和其他中間快取快取單個響應。

0.0.1. 好在每個現代瀏覽器都自帶了 HTTP 快取實現功能。

您只需要確保每個伺服器響應都提供正確的 HTTP 標頭指令,以指示瀏覽器何時可以快取響應以及可以快取多久。

0.0.2. 作為開發者,怎麼利用HTTP Cache?

瀏覽器會替我們完成所有工作,它會自動檢測之前是否指定了驗證令牌,它會將驗證令牌追加到發出的請求上,並且它會根據從伺服器接收的響應在必要時更新快取時間戳。


0.0.3. 唯一要做的

就是確保伺服器提供必要的 ETag 令牌。檢查您的伺服器文件中有無必要的配置標誌。**

0.0.4. 送上Ngix 實戰配置,不玩虛的


# 為JS 檔案新增長時間快取
location ~* \.js$ {
    add_header "section" "long expire"; #  僅供說明
    add_header Cache-Control "max-age=31536000";
}

# 或者為JS檔案刪除ETags
location ~* \.js$ {
  add_header "section" "no etags"; #  僅供說明
  etag off;
}

  location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
    error_page 404 = /index.php;
    expires 1M;
    access_log off;
}
//HTTP/1.1 200 OK
//Server: nginx
//Date: Thu, 23 Oct 2014 09:58:47 GMT
//Content-Type: application/javascript; charset=utf-8
//Content-Length: 1
//Last-Modified: Tue, 29 Oct 2013 15:17:17 GMT
//Connection: keep-alive
//ETag: "526fd17d-1"
//Cache-Control: max-age=31536000
//section: long expire
//Accept-Ranges: bytes

0.0.5. 慎!後面很長


HTTP 1.1 快取校驗

Last-Modified:根據最後修改時間匹配

Last-Modified 不是特別好,因為如果在伺服器上,一個資源被修改了,但其實際內容根本沒傳送改變,會因為Last-Modified時間匹配不上而返回了整個實體給客戶端 (即使客戶端快取裡有個一模一樣的資源) 。也有可能伺服器時間喝客戶端時間不一致也會出現問題

瀏覽器請求會加上

If-Modified-Since: Last-Modified-value
或者 If-Unmodified-Since: Last-Modified-value

If-Modified-Since該請求首部告訴伺服器如果客戶端傳來的最後修改時間與伺服器上的一致,則直接回送304 和響應報頭即可

If-Unmodified-Since告訴伺服器,若Last-Modified沒有匹配上 (資源在服務端的最後更新時間改變了) ,則應當返回412(Precondition Failed) 狀態碼給客戶端

ETag:根據資源識別符號匹配

為了解決上述Last-Modified可能存在的不準確的問題,Http1.1還推出了 ETag 實體首部欄位。 伺服器會通過某種演算法,給資源計算得出一個唯一標誌符(比如md5標誌),伺服器只需要比較客戶端傳來的ETag跟自己伺服器上該資源的ETag是否一致,就能很好地判斷資源相對客戶端而言是否被修改過了。

如果伺服器發現ETag匹配不上,那麼直接以常規GET 200回包形式將新的資源 (當然也包括了新的ETag) 發給客戶端;如果ETag是一致的,則直接返回304知會客戶端直接使用本地快取即可。

瀏覽器請求會加上 If-None-Match: ETag-value 或者 If-Match: ETag-value

0.0.6. 如果 Last-Modified 和 ETag 同時被使用,則要求它們的驗證都必須通過才會返回304,若其中某個驗證沒通過,則伺服器會按常規返回資源實體及200狀態碼。

較新的 nginx 上預設是同時開啟了這兩個功能的 ,是不是感覺本文白看了。


當伺服器返回響應時 HtppResponseHeader會發出一組 HTTP 標頭,用於描述響應的內容型別、長度、快取指令、驗證令牌等。

例如,在下圖的互動中,伺服器返回一個 Gzip 壓縮過的 ,過時時間Expires 為(Sat, 03 Jun 2017 08:45:24 GMT),現在是2017年5月27日。

HtppResponseHeader

開啟GZIP 減輕了近50%的資料請求

0.0.7. 通過 ETag 驗證快取的響應

伺服器使用 ETag HTTP 標頭傳遞驗證令牌。 驗證令牌可實現高效的資源更新檢查:資源未發生變化時不會傳送任何資料。

首次獲取資源 200 秒後,瀏覽器又對該資源發起了新的請求

瀏覽器會檢查本地快取並找到之前的響應。

遺憾的是,該響應現已過期,瀏覽器無法使用。

此時,瀏覽器可以直接發出新的請求並獲取新的完整響應。 不過,這樣做效率較低,因為如果資源未發生變化,那麼下載與快取中已有的完全相同的資訊就毫無道理可言!

這正是驗證令牌( ETag 標頭)旨在解決的問題。 伺服器生成並返回的隨機令牌通常是檔案內容的雜湊值或某個其他指紋。客戶端不需要了解指紋是如何生成的,只需在下一次請求時將其傳送至伺服器。如果指紋仍然相同,則表示資源未發生變化,您就可以跳過下載。

If-None-Match 標頭 是瀏覽器自己自帶的預設行為

在上圖中,客戶端自動在“If-None-Match” HTTP 請求標頭內提供 ETag 令牌。伺服器根據當前資源核對令牌。如果它未發生變化,伺服器將返回“304 Not Modified”響應,告知瀏覽器快取中的響應未發生變化,可以再延用 200 秒。請注意,您不必再次下載響應,這節約了時間和頻寬。

0.0.8. Cache-Control

1.每個資源都可通過 Cache-Control HTTP 標頭定義其快取策略 2.Cache-Control 指令控制誰在什麼條件下可以快取響應以及可以快取多久。

0.0.9. 注:

Cache-Control 標頭是在 HTTP/1.1 規範中定義的,取代了之前用來定義響應快取策略的標頭(例如 Expires)。所有現代瀏覽器都支援 Cache-Control,因此,使用它就夠了。

0.0.10. max-age

指令指定從請求的時間開始,允許獲取的響應被重用的最長時間(單位:秒)。例如,“max-age=60”表示可在接下來的 60 秒快取和重用響應。

0.0.11. no-cache

“no-cache”表示必須先與伺服器確認返回的響應是否發生了變化,然後才能使用該響應來滿足後續對同一網址的請求。因此,如果存在合適的驗證令牌 (ETag),no-cache 會發起往返通訊來驗證快取的響應,但如果資源未發生變化,則可避免下載。

0.0.12. no-store

“no-store”則要簡單得多。它直接禁止瀏覽器以及所有中間快取儲存任何版本的返回響應,例如,包含個人隱私資料或銀行業務資料的響應。每次使用者請求該資產時,都會向伺服器傳送請求,並下載完整的響應。

0.0.13. public

如果響應被標記為“public”,瀏覽器和任何中繼快取均可以將響應快取下來,“public”不是必需的,因為明確的快取資訊(例如“max-age”)已表示響應是可以快取的。

0.0.14. private

瀏覽器可以快取“private”響應。不過,這些響應通常只為單個使用者快取,因此不允許任何中間快取對其進行快取。例如,使用者的瀏覽器可以快取包含使用者私人資訊的 HTML 網頁,但 CDN 卻不能快取。

0.0.15. 如何更新快取的響應

瀏覽器發出的所有 HTTP 請求會首先路由到瀏覽器快取,以確認是否快取了可用於滿足請求的有效響應。如果有匹配的響應,則從快取中讀取響應,這樣就避免了網路延遲和傳送產生的流量費用。

1.在資源“過期”之前,將一直使用本地快取的響應。 2.您可以通過在網址中嵌入檔案內容指紋,強制客戶端更新到新版本的響應。

0.0.16. 實戰篇

假定您已告訴訪問者將某個 CSS 樣式表快取長達 24 小時 (max-age=86400),但設計人員剛剛提交了一個您希望所有使用者都能使用的更新。您該如何通知擁有現在“已過時”的 CSS 快取副本的所有訪問者更新其快取?

在不更改資源網址的情況下,做不到。這就涉及部署的問題。

只能快取的版本將一直使用到過期或者使用者清除了瀏覽器快取

0.0.17. 部署之快取套路

您可以在資源內容發生變化時更改它的網址,強制使用者下載新響應。通常情況下,可以通過在檔名中嵌入檔案的指紋或版本號來實現 ,這其實就是涉及到網站部署的問題。我們可以採用非覆蓋式釋出。

名字+Hash值, 這些構建工具都能實現,比如webpack

這樣不但可以控制每個響應的快取時間,還可以控制訪問者看到新版本的速度。

HTML 被標記為“no-cache”,這意味著瀏覽器在每次請求時都始終會重新驗證文件,並在內容變化時獲取最新版本。這樣內嵌的資源發生改變都會重新請求。

CSS 設定為 1 年後到期。請注意,您可以放心地使用 1 年的“遠期過期”,因為您在檔名中嵌入了檔案的指紋:CSS 更新時網址也會隨之變化。

JavaScript 同樣設定為 1 年後到期,但標記為 private,這或許是因為它包含的某些使用者私人資料是 CDN 不應快取的。

影象快取時不包含版本或唯一指紋,並設定為 1 天后到期。

您可以組合使用 ETag、Cache-Control 和唯一網址來實現一舉多得:較長的過期時間、控制可以快取響應的位置以及隨需更新。