Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FirefoxOS Meetup - Updates on Offline in HTML5 Web Apps


Published on

New updated version of my Offline presentation detailing the new awesomeness of ServiceWorker!

Published in: Technology
  • Be the first to comment

FirefoxOS Meetup - Updates on Offline in HTML5 Web Apps

  1. 1. Updates on Offline “My AppCache won’t come back” and “ServiceWorker Tricks for Cache” Natasha Rooney Web Technologist GSM Association @thisNatasha 1
  2. 2. 1 boring slide about me. Aw, do we have to? Yup! It’s relevant (sorta) 2 @thisNatasha
  3. 3. 1 boring slide about me. Aw, do we have to? Yup! It’s relevant (sorta) 2 Offline Web Apps @thisNatasha
  4. 4. totemo CONFUSING desu ne? 紛らわしいからですね! 3 @thisNatasha
  5. 5. totemo CONFUSING desu ne? 紛らわしいからですね! 3 Web Storage Key-value mapping IndexedDB Key-value mapping + indexes File Access Reading file content New HTML5 APIs @thisNatasha
  6. 6. totemo CONFUSING desu ne? 紛らわしいからですね! 3 App Cache BRAND NEW cache mechanism of wonder which will answer all your questions of life’s worries and fulfill your every day with the realisation of your dreams of riches, love, intelligence, regular full nights of sleep and a real life Jurassic Park... New HTML5 APIs @thisNatasha
  7. 7. 4 App Cache: COOL! How do I do it!? @thisNatasha
  8. 8. 4 Manifest File But understanding App Cache comes with an interesting story… Content vs. Shell ... App Cache: COOL! How do I do it!? @thisNatasha
  9. 9. 5 shell content @thisNatasha
  10. 10. 6 content shell @thisNatasha
  11. 11. Use Case mismatch lead to... 7 App Cache is a Douchebag Gotchas 1. Files always come from the App Cache, even if you are online 2. The App only updates if the manifest file changes 3. The App Cache is an additional cache, not an alternative one 4. Never future-cache the manifest 5. Non cached resources (e.g. images) will not load in a cached page 6. No more conditional downloads, including responsive images 7. No idea how the fallback page works 8. Redirects to other domains are treated like failures Source: @thisNatasha
  12. 12. The moral of the story... DO IT! Shell Javascript, CSS and HTML for the shell ● Fonts ● Sprites ● Splash screen images (Guidance from FT Labs) DON’T DO IT! Content! Disclaimer: Still a lot of opinions in this area! 8 @thisNatasha
  13. 13. Another solution? 9 @thisNatasha
  14. 14. ServiceWorker! 10 Source: ➔ New API ➔ Power to the dev! ➔ Apps, not pages - multi caches Some quick interesting bits: ➔ Documents and Service Workers are BFFs ➔ Default Fallback: Normal resource loading ➔ Wildcards are OK ➔ 2 Service Workers are OK (default is last one) ➔ Inception is NOT OK Register @thisNatasha
  15. 15. ServiceWorker: ctrl.js 11 Source: @thisNatasha
  16. 16. ServiceWorker: Caching! 12 Source: @thisNatasha
  17. 17. BREAK: Promises ① History ➔ Multilisp ➔ Java Futures BREAK
  18. 18. BREAK: Promises ① Current Complexity BREAK Source:
  19. 19. BREAK: Promises ① New Promises BREAK Source:
  20. 20. ServiceWorker: Caching! 12 Source: @thisNatasha
  21. 21. ServiceWorker: Caching 13 Source: cont... @thisNatasha
  22. 22. cont... ServiceWorker: Caching Also use ➔ e.respondWith(this.caches.match("shell-v1", e.request.url)); 13 Source: @thisNatasha
  23. 23. Offline? Yeah! 14 @thisNatasha
  24. 24. ServiceWorker: Fallbacks 15 Source: @thisNatasha
  25. 25. ServiceWorker: RULES 16 Source: 1. Documents and Service workers are BFFs 2. ServiceWorkers should be written to avoid holding global state 3. New tab means same ServiceWorker 4. Version your ServiceWorkers! 5. ServiceWorkers cannot be served on CDNs 6. CORS 7. importScripts() that run before oninstall finishes will go in browser cache 8. Use Cache-Control: no-cache or Cache-Control: private @thisNatasha
  26. 26. The bits I REALLY like... Some cool stuff about ServiceWorkers ➔ Fallbacks for fallbacks for fallbacks ➔ It’s 100% or nothing ➔ “User chooses” or “dev chooses” both OK! ➔ Work with Quota API ➔ Works with Installed Apps What about Network Information APIs? 17 @thisNatasha
  27. 27. What we learnt... Did we learn anything?! - The W3C cares about mobile! - Offline solutions are confusing - App Cache was not fit for purpose - Shell and Content - Service Worker Offline as a side effect Promises Bit of rule following multi cache, multi fallback 18 @thisNatasha
  28. 28. Thanks! 19 Especially... Alex Russell | Google @slighltylate Jake Archibald | Google @jaffathecake Jonas Sicking | Mozilla @SickingJ Jeremy Chone | Britesnow @JeremyChone @thisNatasha