SlideShare ist ein Scribd-Unternehmen logo
1 von 32
HTML5 LOCAL STORAGE
Front-End Meetup #7
Lior Zamir
HPE Software Innovation Webmaster
LiorZ@hpe.com
Using HTML5 Web LocalStorage for
Improve Performance and User Experience
Agenda
1. Why store data on the client?
2. Methods for storing data on the client-side
3. HTML5 Web Storage
4. Syntax + Demo
5. Use Cases
6. Best Practice
Why store data on the client?
Why Store Data on the Client?
Use cases:
• You want to increase performance. You can cache data
client-side so it can be retrieved without additional server
requests.
• You want to restore the state of your interface without
forcing people to sign up (HTTP is stateless…).
• You want you make your application work off-line.
What are the methods
for storing data
on the client-side?
Methods For Storing Data
JavaScript Variables
• Pros:
 The fastest and simplest solution
 No need to serialize or de-serialize data
 Ideal for single-page applications
• Cons:
 Very fragile — linking elsewhere, refreshing/closing the tab will
wipe all data
 Global variables can be overwritten and analyzed by third-party
scripts.
Methods For Storing Data
Cookies
• Pros:
 A reliable method of retaining state between the client and server
 With expiry date - data will persist beyond page refreshes and tab closing
 Supported in all modern browsers
• Cons:
 Data is added to every HTTP request header
 Values are strings only — other data must be serialized
 Storage space is limited — 4KB per cookie
 Can be deleted or blocked
 Threat to internet privacy
HTML5 Web Storage
HTML5 Web Storage
• Pros:
 Easy to use with simple name/value pairs
 Session and persistent storage options are available
 An event model is available to keep other tabs and windows synchronized
 Wide support on desktop and mobile browsers including IE8+
 Do not need to be transmitted with each HTTP request and response until
required
• Cons:
 String values only — serialization may be necessary
 Unstructured data with no transactions, indexing or searching facilities
Can I use it?
LocalStorage vs SessionStorage
SessionStorage
• Persists a storage area for the duration of the page session.
• Use it when you need to store some data temporarily.
• Data is available:
o As long as the browser is open, including page reloads/restores
o It gets deleted the time when the tab/window who created the session is closed
LocalStorage
• Persists the data until the user explicitly deletes the data.
• Use it when you need to store some data for the long term.
• Data is available:
o Even after the browser is closed and reopened
Syntax
Web Storage (Second Edition)
W3C Recommendation 19 April 2016
https://www.w3.org/TR/webstorage
interface Storage {
readonly attribute unsigned long length;
DOMString? key(unsigned long index);
getter DOMString? getItem(DOMString key);
setter void setItem(DOMString key, DOMString value);
deleter void removeItem(DOMString key);
void clear();
};
Syntax
• Options for storing data:
o localStorage.setItem("name", "value");
o localStorage.name = "value";
o localStorage["name"] = "value";
• Options for retrieving stored data:
o localStorage.getItem("name");
o localStorage.name;
o localStorage["name"];
Syntax
• Options for deleting stored data:
• localStorage.removeItem("name");
• delete localStorage.name;
• delete localStorage["name"];
• All of the stored data can be deleted from localStorage by using:
• localStorage.clear();
 The syntax of sessionStorage is identical (just use “sessionStorage” instead of “localStorage”)
Example:
Native API (JSON serialize of objects)
vs
store.js
var car = {};
car.wheels = 4;
car.engine = 1.8;
car.name = 'Alfa Romeo';
store.set('car', car);
car = store.get('car');
console.log(car);
localStorage.setItem('car', JSON.stringify(car));
car = JSON.parse(localStorage.getItem('car'));
console.log(car);
With native API + JSON serialize: With store.js:
Debug
Use Cases
Use Case #1
Improve Performance by Caching
Use Case #1
Improve Performance by Caching
A faster site and an offline site:
• Cache API and AJAX results
• Cache resources (e.g. JS/CSS files)
• basket.js - small JavaScript library supporting localStorage caching of scripts.
• Google Search and Bing make extensive use of localStorage for stashing SCRIPT
and STYLE blocks that are used on subsequent page views.
• They have shown that there are performance benefits to caching assets in
localStorage (especially on mobile) when compared to simply reading and writing
from the standard browser cache.
We can load some critical path
resources such as a JavaScript that's
required for our UX up to 3 - 5x
faster using localStorage than from
the browser's native cache.
Use Case #1
Improve Performance by Caching
We can use localStorage to make
a mobile website faster!
Use Case #2
Improve User Experience
Use Case #2
Improve user experience
• For apps that don't want to force user login for interactivity
• Save user profile and favorites (without login)
• Persistent app state:
• Open tabs, expanded/collapsed sections, layout options, dismissed
messages, etc.
• Filled-in forms -
• Login username/email
• Unsaved/unposted drafts
• Stuff that's often the same
• autoStorage.js
• If the internet gets disconnected during data transfer, the user can
choose to revisit the site and resend this data.
The user
disconnected
during data
transfer
Upon the user’s
subsequent revisit to the
site, the application
verifies if any key for the
results exists for this
domain
The site presents
the user with an
option to resend
the data (via a
button click)
Use Case #2
Improve user experience
Other Use Cases
• For apps that don't have a server-side (yet/ever)
• For apps that live only in the client (extensions/mobile)
Best Practice
Best practice
• Don't: block the UI
<head>
<script>
$('#name').html(localStorage.getItem('name'));
</script>
</head>
• Do: defer using localStorage until onload
<html>
<body></body>
<script>
window.onload = function() {
$('#name').html(localStorage.getItem('name'));
};
</script>
</html>
Best practice
• Don't: assume localStorage works or will always work.
• Do: check for feature support, check if its read/write, and check if its over quota.
Bad:
localStorage.setItem('bla', 'bla');
Better:
if (window.localStorage) {
localStorage.setItem('bla', 'bla');
}
Best:
if (window.localStorage) {
try {
localStorage.setItem('bla', 'bla');
} catch(e) {
if (e.name === 'QUOTA_EXCEEDED_ERR'
|| e.name ===
'NS_ERROR_DOM_QUOTA_REACHED') {
} else { }
} }
Most localStorage libraries take care of this for you.
The Dark Side Of
Local Storage
• Any powerful technology
comes with the danger of
people abusing it for
darker purposes.
• E.g. EverCookie, exploit
all kind of techniques,
including local storage, to
store information of a
user on their computer
even when cookies are
turned off.
Lior Zamir
LiorZ@hpe.com
https://il.linkedin.com/in/lzamir
HTML5 is here to stay!

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to Web Architecture
Introduction to Web ArchitectureIntroduction to Web Architecture
Introduction to Web Architecture
Chamnap Chhorn
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
Varun C M
 

Was ist angesagt? (20)

Dynamic CSS: Transforms, Transitions, and Animation Basics
Dynamic CSS: Transforms, Transitions, and Animation BasicsDynamic CSS: Transforms, Transitions, and Animation Basics
Dynamic CSS: Transforms, Transitions, and Animation Basics
 
Introduction to Web Architecture
Introduction to Web ArchitectureIntroduction to Web Architecture
Introduction to Web Architecture
 
New Elements & Features in HTML5
New Elements & Features in HTML5New Elements & Features in HTML5
New Elements & Features in HTML5
 
JavaScript - Chapter 12 - Document Object Model
  JavaScript - Chapter 12 - Document Object Model  JavaScript - Chapter 12 - Document Object Model
JavaScript - Chapter 12 - Document Object Model
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
 
Html5-Web-Storage
Html5-Web-StorageHtml5-Web-Storage
Html5-Web-Storage
 
TypeScript - An Introduction
TypeScript - An IntroductionTypeScript - An Introduction
TypeScript - An Introduction
 
Css Ppt
Css PptCss Ppt
Css Ppt
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
 
Java script
Java scriptJava script
Java script
 
HTML/CSS/java Script/Jquery
HTML/CSS/java Script/JqueryHTML/CSS/java Script/Jquery
HTML/CSS/java Script/Jquery
 
Asynchronous JavaScript Programming with Callbacks & Promises
Asynchronous JavaScript Programming with Callbacks & PromisesAsynchronous JavaScript Programming with Callbacks & Promises
Asynchronous JavaScript Programming with Callbacks & Promises
 
Html forms
Html formsHtml forms
Html forms
 
Html 5 Features And Benefits
Html 5 Features And Benefits  Html 5 Features And Benefits
Html 5 Features And Benefits
 
Intro to React
Intro to ReactIntro to React
Intro to React
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 
JSON: The Basics
JSON: The BasicsJSON: The Basics
JSON: The Basics
 
Html and css
Html and cssHtml and css
Html and css
 
Learn react-js
Learn react-jsLearn react-js
Learn react-js
 
Dom
DomDom
Dom
 

Andere mochten auch

Html5 storage and browser storage
Html5 storage and browser storageHtml5 storage and browser storage
Html5 storage and browser storage
Sway Deng
 
Rethinking the agile enterprise
Rethinking the agile enterpriseRethinking the agile enterprise
Rethinking the agile enterprise
Brandon Byars
 
An Overview of HTML5 Storage
An Overview of HTML5 StorageAn Overview of HTML5 Storage
An Overview of HTML5 Storage
Paul Irish
 
Personas: Understanding the User Behind the Visit
Personas: Understanding the User Behind the VisitPersonas: Understanding the User Behind the Visit
Personas: Understanding the User Behind the Visit
Michael King
 

Andere mochten auch (18)

Local Storage for Web Applications
Local Storage for Web ApplicationsLocal Storage for Web Applications
Local Storage for Web Applications
 
HTML5 Storage/Cache
HTML5 Storage/CacheHTML5 Storage/Cache
HTML5 Storage/Cache
 
Html5 storage and browser storage
Html5 storage and browser storageHtml5 storage and browser storage
Html5 storage and browser storage
 
Basics of html5, data_storage, css3
Basics of html5, data_storage, css3Basics of html5, data_storage, css3
Basics of html5, data_storage, css3
 
HTML 5
HTML 5HTML 5
HTML 5
 
Rethinking the agile enterprise
Rethinking the agile enterpriseRethinking the agile enterprise
Rethinking the agile enterprise
 
HTML5
HTML5HTML5
HTML5
 
Quality, Courtesy and a big Parking
Quality, Courtesy and a big ParkingQuality, Courtesy and a big Parking
Quality, Courtesy and a big Parking
 
Local storage in Web apps
Local storage in Web appsLocal storage in Web apps
Local storage in Web apps
 
Web Storage & Web Workers
Web Storage & Web WorkersWeb Storage & Web Workers
Web Storage & Web Workers
 
Dtd
DtdDtd
Dtd
 
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
 
Best Web-based Data Visualization tools
Best Web-based Data Visualization tools Best Web-based Data Visualization tools
Best Web-based Data Visualization tools
 
An Overview of HTML5 Storage
An Overview of HTML5 StorageAn Overview of HTML5 Storage
An Overview of HTML5 Storage
 
Xml dtd
Xml dtdXml dtd
Xml dtd
 
Personas: Understanding the User Behind the Visit
Personas: Understanding the User Behind the VisitPersonas: Understanding the User Behind the Visit
Personas: Understanding the User Behind the Visit
 
Advanced Caching Concepts @ Velocity NY 2015
Advanced Caching Concepts @ Velocity NY 2015Advanced Caching Concepts @ Velocity NY 2015
Advanced Caching Concepts @ Velocity NY 2015
 
HTTP/2 standard for video streaming
HTTP/2 standard for video streamingHTTP/2 standard for video streaming
HTTP/2 standard for video streaming
 

Ähnlich wie HTML5 Local Storage

ASP.Net Presentation Part3
ASP.Net Presentation Part3ASP.Net Presentation Part3
ASP.Net Presentation Part3
Neeraj Mathur
 
HTML5 Data Storage
HTML5 Data StorageHTML5 Data Storage
HTML5 Data Storage
Allan Huang
 

Ähnlich wie HTML5 Local Storage (20)

Web storage
Web storage Web storage
Web storage
 
HTML5 Web storage
HTML5 Web storageHTML5 Web storage
HTML5 Web storage
 
HTML5 and Search Engine Optimization (SEO)
HTML5 and Search Engine Optimization (SEO)HTML5 and Search Engine Optimization (SEO)
HTML5 and Search Engine Optimization (SEO)
 
Building Faster Websites
Building Faster WebsitesBuilding Faster Websites
Building Faster Websites
 
Internet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian ThilmanyInternet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian Thilmany
 
T5 Oli Aro
T5 Oli AroT5 Oli Aro
T5 Oli Aro
 
Chapter 8 part1
Chapter 8   part1Chapter 8   part1
Chapter 8 part1
 
C# cookieless session id and application state
C# cookieless session id and application stateC# cookieless session id and application state
C# cookieless session id and application state
 
State management in ASP.net
State  management in ASP.netState  management in ASP.net
State management in ASP.net
 
REST Api Tips and Tricks
REST Api Tips and TricksREST Api Tips and Tricks
REST Api Tips and Tricks
 
State management in ASP .NET
State  management in ASP .NETState  management in ASP .NET
State management in ASP .NET
 
Mini-Training: To cache or not to cache
Mini-Training: To cache or not to cacheMini-Training: To cache or not to cache
Mini-Training: To cache or not to cache
 
Notes on SF W3Conf
Notes on SF W3ConfNotes on SF W3Conf
Notes on SF W3Conf
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!
 
Html5 web storage
Html5 web storageHtml5 web storage
Html5 web storage
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
 
Where to save my data, for devs!
Where to save my data, for devs!Where to save my data, for devs!
Where to save my data, for devs!
 
Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5
 
ASP.Net Presentation Part3
ASP.Net Presentation Part3ASP.Net Presentation Part3
ASP.Net Presentation Part3
 
HTML5 Data Storage
HTML5 Data StorageHTML5 Data Storage
HTML5 Data Storage
 

Mehr von Lior Zamir (14)

New CSS ways to control layout
New CSS ways to control layoutNew CSS ways to control layout
New CSS ways to control layout
 
SharePoint Online (365) vs SharePoint On-Premises
SharePoint Online (365) vs SharePoint On-PremisesSharePoint Online (365) vs SharePoint On-Premises
SharePoint Online (365) vs SharePoint On-Premises
 
שילוב אלמנטים גרפיים באתר אינטרנט
שילוב אלמנטים גרפיים באתר אינטרנטשילוב אלמנטים גרפיים באתר אינטרנט
שילוב אלמנטים גרפיים באתר אינטרנט
 
Office 2010 IT
Office 2010 ITOffice 2010 IT
Office 2010 IT
 
WPF
WPFWPF
WPF
 
Office2007 full with_products
Office2007 full with_productsOffice2007 full with_products
Office2007 full with_products
 
Ado.Net - שיטות לעבודה עם בסיס נתונים בסביבת
Ado.Net - שיטות לעבודה עם בסיס נתונים בסביבתAdo.Net - שיטות לעבודה עם בסיס נתונים בסביבת
Ado.Net - שיטות לעבודה עם בסיס נתונים בסביבת
 
Internet introduction
Internet introductionInternet introduction
Internet introduction
 
Web Technologies
Web TechnologiesWeb Technologies
Web Technologies
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Microsoft .Net Framework
Microsoft .Net FrameworkMicrosoft .Net Framework
Microsoft .Net Framework
 
Computer Communication
Computer CommunicationComputer Communication
Computer Communication
 
Search Engines
Search EnginesSearch Engines
Search Engines
 
Web Services
Web ServicesWeb Services
Web Services
 

Kürzlich hochgeladen

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Kürzlich hochgeladen (20)

Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 

HTML5 Local Storage

  • 1. HTML5 LOCAL STORAGE Front-End Meetup #7 Lior Zamir HPE Software Innovation Webmaster LiorZ@hpe.com Using HTML5 Web LocalStorage for Improve Performance and User Experience
  • 2. Agenda 1. Why store data on the client? 2. Methods for storing data on the client-side 3. HTML5 Web Storage 4. Syntax + Demo 5. Use Cases 6. Best Practice
  • 3.
  • 4. Why store data on the client?
  • 5. Why Store Data on the Client? Use cases: • You want to increase performance. You can cache data client-side so it can be retrieved without additional server requests. • You want to restore the state of your interface without forcing people to sign up (HTTP is stateless…). • You want you make your application work off-line.
  • 6. What are the methods for storing data on the client-side?
  • 7. Methods For Storing Data JavaScript Variables • Pros:  The fastest and simplest solution  No need to serialize or de-serialize data  Ideal for single-page applications • Cons:  Very fragile — linking elsewhere, refreshing/closing the tab will wipe all data  Global variables can be overwritten and analyzed by third-party scripts.
  • 8. Methods For Storing Data Cookies • Pros:  A reliable method of retaining state between the client and server  With expiry date - data will persist beyond page refreshes and tab closing  Supported in all modern browsers • Cons:  Data is added to every HTTP request header  Values are strings only — other data must be serialized  Storage space is limited — 4KB per cookie  Can be deleted or blocked  Threat to internet privacy
  • 10. HTML5 Web Storage • Pros:  Easy to use with simple name/value pairs  Session and persistent storage options are available  An event model is available to keep other tabs and windows synchronized  Wide support on desktop and mobile browsers including IE8+  Do not need to be transmitted with each HTTP request and response until required • Cons:  String values only — serialization may be necessary  Unstructured data with no transactions, indexing or searching facilities
  • 11. Can I use it?
  • 12. LocalStorage vs SessionStorage SessionStorage • Persists a storage area for the duration of the page session. • Use it when you need to store some data temporarily. • Data is available: o As long as the browser is open, including page reloads/restores o It gets deleted the time when the tab/window who created the session is closed LocalStorage • Persists the data until the user explicitly deletes the data. • Use it when you need to store some data for the long term. • Data is available: o Even after the browser is closed and reopened
  • 14. Web Storage (Second Edition) W3C Recommendation 19 April 2016 https://www.w3.org/TR/webstorage interface Storage { readonly attribute unsigned long length; DOMString? key(unsigned long index); getter DOMString? getItem(DOMString key); setter void setItem(DOMString key, DOMString value); deleter void removeItem(DOMString key); void clear(); };
  • 15. Syntax • Options for storing data: o localStorage.setItem("name", "value"); o localStorage.name = "value"; o localStorage["name"] = "value"; • Options for retrieving stored data: o localStorage.getItem("name"); o localStorage.name; o localStorage["name"];
  • 16. Syntax • Options for deleting stored data: • localStorage.removeItem("name"); • delete localStorage.name; • delete localStorage["name"]; • All of the stored data can be deleted from localStorage by using: • localStorage.clear();  The syntax of sessionStorage is identical (just use “sessionStorage” instead of “localStorage”)
  • 17. Example: Native API (JSON serialize of objects) vs store.js var car = {}; car.wheels = 4; car.engine = 1.8; car.name = 'Alfa Romeo'; store.set('car', car); car = store.get('car'); console.log(car); localStorage.setItem('car', JSON.stringify(car)); car = JSON.parse(localStorage.getItem('car')); console.log(car); With native API + JSON serialize: With store.js:
  • 18. Debug
  • 20. Use Case #1 Improve Performance by Caching
  • 21. Use Case #1 Improve Performance by Caching A faster site and an offline site: • Cache API and AJAX results • Cache resources (e.g. JS/CSS files) • basket.js - small JavaScript library supporting localStorage caching of scripts. • Google Search and Bing make extensive use of localStorage for stashing SCRIPT and STYLE blocks that are used on subsequent page views. • They have shown that there are performance benefits to caching assets in localStorage (especially on mobile) when compared to simply reading and writing from the standard browser cache.
  • 22. We can load some critical path resources such as a JavaScript that's required for our UX up to 3 - 5x faster using localStorage than from the browser's native cache. Use Case #1 Improve Performance by Caching We can use localStorage to make a mobile website faster!
  • 23. Use Case #2 Improve User Experience
  • 24. Use Case #2 Improve user experience • For apps that don't want to force user login for interactivity • Save user profile and favorites (without login) • Persistent app state: • Open tabs, expanded/collapsed sections, layout options, dismissed messages, etc. • Filled-in forms - • Login username/email • Unsaved/unposted drafts • Stuff that's often the same • autoStorage.js
  • 25. • If the internet gets disconnected during data transfer, the user can choose to revisit the site and resend this data. The user disconnected during data transfer Upon the user’s subsequent revisit to the site, the application verifies if any key for the results exists for this domain The site presents the user with an option to resend the data (via a button click) Use Case #2 Improve user experience
  • 26. Other Use Cases • For apps that don't have a server-side (yet/ever) • For apps that live only in the client (extensions/mobile)
  • 28. Best practice • Don't: block the UI <head> <script> $('#name').html(localStorage.getItem('name')); </script> </head> • Do: defer using localStorage until onload <html> <body></body> <script> window.onload = function() { $('#name').html(localStorage.getItem('name')); }; </script> </html>
  • 29. Best practice • Don't: assume localStorage works or will always work. • Do: check for feature support, check if its read/write, and check if its over quota. Bad: localStorage.setItem('bla', 'bla'); Better: if (window.localStorage) { localStorage.setItem('bla', 'bla'); } Best: if (window.localStorage) { try { localStorage.setItem('bla', 'bla'); } catch(e) { if (e.name === 'QUOTA_EXCEEDED_ERR' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') { } else { } } } Most localStorage libraries take care of this for you.
  • 30. The Dark Side Of Local Storage • Any powerful technology comes with the danger of people abusing it for darker purposes. • E.g. EverCookie, exploit all kind of techniques, including local storage, to store information of a user on their computer even when cookies are turned off.
  • 32. HTML5 is here to stay!

Hinweis der Redaktion

  1. https://en.wikipedia.org/wiki/HTML5
  2. + You have a significant quantity of client-side-only data, e.g. HTML strings or widget configuration settings.
  3. Cookie data is added to every HTTP request header. This can end up having a measurable impact on response time, especially during XHRs. Values are strings only — other data must be serialized Cookie storage space is limited —20 cookies per domain of 4KB each Cookies can be deleted or blocked Cookies were unfairly labeled as a threat to internet privacy; you may need to comply with bizarre regional rules and regulations.
  4. May exhibit poor performance on large datasets
  5. http://caniuse.com/#feat=namevalue-storage
  6. IndexedDB is at present significantly slower than localStorage for reading and writing assets. http://www.stevesouders.com/blog/2011/03/28/storager-case-study-bing-google/ basket.js - If script(s) have previously been saved locally, they will simply be loaded and injected into the current document. (If not, they will be XHR'd in for use right away, but cached so that no additional loads are required in the future).