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

HTTP/2.0 Introduction

HTTP/2.0 Introduction

After 16 years a new version of the HTTP protocol has now been finalized and wide support in browsers and web servers is coming quickly. In this talk I'll explain how HTTP and browsers work in general, what HTTP/2.0 is all about, what it means for your web applications and how it can help your application's performance.

Bastian Hofmann

August 23, 2015
Tweet

More Decks by Bastian Hofmann

Other Decks in Programming

Transcript

  1. GET  /home  HTTP/1.1   Host:  www.researchgate.net   pragma:  no-­‐cache  

    dnt:  1   accept-­‐encoding:  gzip,  deflate,  sdch   accept-­‐language:  de-­‐DE,de;q=0.8,en-­‐ US;q=0.6,en;q=0.4   user-­‐agent:  Mozilla/5.0  (Macintosh;  Intel  Mac  OS  X   10_10_4)  AppleWebKit/537.36  (KHTML,  like  Gecko)   Chrome/46.0.2478.0  Safari/537.36   accept:  text/html,application/xhtml +xml,application/xml;q=0.9,image/webp,*/*;q=0.8   cache-­‐control:  no-­‐cache   cookie:  …  
  2. HTTP/1.1  200  OK   Date:  Sun,  16  Aug  2015  11:21:31

     GMT   Content-­‐Type:  text/html;  charset=utf-­‐8   Transfer-­‐Encoding:  chunked   Connection:  keep-­‐alive   Cache-­‐Control:  must-­‐revalidate,  no-­‐cache,  no-­‐store,   post-­‐check=0,  pre-­‐check=0,  private   X-­‐Correlation-­‐Id:...   expires:  Thu,  19  Nov  1981  08:52:00  GMT   pragma:  no-­‐cache   X-­‐UA-­‐Compatible:  IE=Edge   X-­‐Frame-­‐Options:  SAMEORIGIN   P3P:  CP="..."   X-­‐Content-­‐Type-­‐Options:  nosniff   X-­‐XSS-­‐Protection:  1;  mode=block   Strict-­‐Transport-­‐Security:  max-­‐age=7200   Content-­‐Security-­‐Policy:  …   Content-­‐Encoding:  gzip  
  3. CSS

  4. JS

  5. HTTP/1.1 200 OK Content-Type: text/html <html> <head> <link href="main.css" >

    <link href="profile.css" > <script src="library.js" /> <script src="app.js" /> <script> // some JS </script> </head> <body>
  6. JS

  7. CSS

  8. HTTP/1.1 200 OK Content-Type: text/html <html> <head> <styles> … your

    critical css </styles> </head> <body> <div>content</div> load main.css async set cookie that other css was loaded </body> </html>
  9. HTTP/1.1 200 OK Content-Type: text/html <html> <head> <link href="main.css" >

    // loaded from cache </head> <body> <div>content</div> </body> </html>
  10. Browser Server GET css & js HTTP/1.1 200 OK Content-Type:

    text/html <html> <head><link ..><script ..> GET /foo.html </head><body></body></html>
  11. Browser Server GET /foo.html <body></body> </html> HTTP/1.1 200 OK Content-Type:

    text/html <html> <head><link ..><script ..></head> GET css & js
  12. GET  /literature.AddPublicationsDialog   HTTP/1.1  200  OK   Content-­‐Type:  application/json  

    {          "data":  {...},          "css":  ["AddPublicationsDialog.css"],          "js":  ["AddPublicationsDialogView.js"],          "html":  ["addConferencePaperSelection.html"]   }
  13. localStorage.setItem(      "literature.AddPublicationsDialog",      {      

       "css":  ["AddPublicationsDialog.css"],          "js":  ["AddPublicationsDialogView.js"],          "html":  ["addConferencePaperSelection.html"]      }   );
  14. Browser Server Push CSS & JS HTTP/1.1 200 OK Content-Type:

    text/html <html> <head><link ..><script ..> </head><body></body></html> GET /foo.html