Discussion
HTTP/1.1 review
Widespread adoption in 1996 with full standard in 1997 RFC 2068 and later replaced with one in 1999 RFC 2616 Request (URL, method, headers, body) & Response (status code, headers, body) Inherently async Built for HyperText, makes it have problems
Head of line blocking
combining payloads to 1 response multiple connections (Connection: Keep-Alive vs Close) HTTP Pipelining
No cancellation, have to tear down connection No prioritization, round robin over connections
iOS/Mac
NSURLRequest (NSHTTPURLRequest) and NSURLResponse (NSHTTPURLResponse) NSURLConnection and NSURLSession
HTTP/2
Started by Google with SPDY (2012 - 2016), latest is SPDY/3.1 HTTP/2 is a binary protocol, where 1 and 1.1 are text Previous episode on SPDY with M Schore Reached standard in 2015 with RFC 7540 and adopted by Apple with iOS 9, Mac OS X 10.11 Resolves many issues with new features:
multiplexing (helps with head of line problem in HTTP/1.1)
cancellation header compression
Always there plain text, optimal for compression
dynamic prioritization
be responsible, set lower priority when possible
not guaranteed that the server will prioritize because it is optional in HTTP/2 spec push responses (Nolan’s not a fan)
not supported by Apple
Upgrade to HTTP/2 dynamically with Upgrade Header or ALPN
Application Layer Protocol Negotiation, ALPN is during TLS and far more efficient than Upgrade header NPN (Next Protocol Negotiation)
Picks
Nolan
Akamai HTTP/2 Demo - Good info at https://http2.akamai.com HTTP/2 Test - Test supported domains
Darryl
What Every iOS Developer Should Be Doing With Instruments - Great introduction to Instruments by Kevin Kazmeirczak
John
ClockKit Tutorial: Add Complication to an Already Existing Watch Project from Kristina Thai
Jason
RescueTime - Time management software