JavaScript提供了两种本地存储的方式:localStorage和sessionStorage。
localStorage用于长期保存整个网站的数据,即使关闭浏览器或电脑也不会丢失。
sessionStorage仅在当前会话中保存数据,当关闭浏览器或标签页时会自动清除。
localStorage通过键值对的方式存储数据,可以使用setItem()方法添加数据,getItem()方法获取数据,removeItem()方法删除数据。
// 添加数据 localStorage.setItem('key', 'value'); // 获取数据 var data = localStorage.getItem('key'); // 删除数据 localStorage.removeItem('key');
sessionStorage的使用与localStorage相同,但是存储的数据仅在当前会话中有效。
// 添加数据 sessionStorage.setItem('key', 'value'); // 获取数据 var data = sessionStorage.getItem('key'); // 删除数据 sessionStorage.removeItem('key');
离线数据处理指的是在没有网络连接的情况下,通过缓存数据的方式使网站能够正常运行。
JavaScript提供了Service Worker和Cache API来实现离线数据处理。
Service Worker是一个独立的JavaScript线程,可以拦截和处理网络请求,从而实现离线数据处理。
使用Service Worker需要满足以下条件:
注册Service Worker后,可以通过fetch事件拦截和处理网络请求,并将响应存储在Cache API中。
// 注册Service Worker if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js'); } // Service Worker中的fetch事件 self.addEventListener('fetch', function(event) { event.respondWith( caches.match(event.request).then(function(response) { if (response) { return response; } return fetch(event.request); }) ); });
Cache API用于缓存网络请求的响应,可以在离线时使用缓存的响应。
使用Cache API需要先打开一个缓存,然后可以使用put()方法添加响应,使用match()方法获取响应。
// 打开缓存 caches.open('cache').then(function(cache) { // 添加响应 cache.put(request, response.clone()); }); // 获取响应 caches.match(request).then(function(response) { if (response) { return response; } return fetch(request); });