Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Caching in HTTP

SJ Chou
January 13, 2014

Caching in HTTP

初探 HTTP 1.1 Cache 機制,透過簡單的實驗來說明瀏覽器對於 HTPP Cache 的實作策略。

SJ Chou

January 13, 2014
Tweet

More Decks by SJ Chou

Other Decks in Programming

Transcript

  1. Caching in HTTP
    SJ
    2016/07/25
    Email: [email protected]
    Blog: http://blog.toright.com

    View Slide

  2. 回顧 HTTP 1.1 的設計理念
    Architectural Styles and the Design of Network-based Software Architectures (by Roy Thomas
    Fielding)
    CHAPTER 5. Representational State Transfer (REST)

    View Slide

  3. HTTP Features
    ● HTTP 1.1 設計 Cache 的目的在降低
    Request 與 Full Response
    ● 以下兩個主要的設計理念
    ○ Expiration
    ○ Validation
    ● 實作上透過 Header 讓 Server 與 Client 可以
    自由定義 Cache 的方式

    View Slide

  4. HTTP 1.0 與 HTTP 1.1 Caching Difference
    HTTP 1.0 Reponse Cache Header
    ○ Expires
    ○ Pragma
    HTTP 1.1 Reponse Cache Header
    ○ Cache-Control

    View Slide

  5. 介紹 HTTP 1.1 Cache-Control Header
    ● Response Cache Header
    ○ no-store
    完全不 Cache
    ○ no-cache
    允許 Cache 但是每次都會檢查 Cache 狀態
    ○ max-age
    設定要 Cache 幾秒
    ○ private
    Cache 只給目前使用者使用
    ○ public
    Cache 可共用 (HTTPS不可共用)
    ○ must-revalidate
    交由 Client 自行決定要不要使用 Cache
    ● 可以混搭

    View Slide

  6. 如何檢查 Cache 是否有效?
    ● 時間導向 (秒為單位)
    Last-Modified / If-Modified-Since
    ● 檔案內容導向 (Hash)
    ETag / If-None-Match

    View Slide

  7. Cache-Control: no-store

    View Slide

  8. Cache-Control: no-cache

    View Slide

  9. Cache-Control: max-age

    View Slide

  10. Cache-Control: private

    View Slide

  11. Cache-Control: public

    View Slide

  12. Cache-Control: must-revalidate

    View Slide

  13. Reference
    ● HTTP 1.1 RFC 2616 - 14.9 Cache-Control
    ● HTTP 1.1 RFC 2616 - 13 Caching in HTTP
    ● Architectural Styles and the Design of
    Network-based Software Architectures - 5
    Representational State Transfer (REST)

    View Slide

  14. Thanks!
    The End
    Email: [email protected]
    Blog: http://blog.toright.com

    View Slide