服务人员编码为乐高积木

Iker Urteaga在Unsplash上​​拍摄的照片

这些天,在准备Google移动专家认证考试的同时,必须学习如何开发PWA(渐进式Web应用程序)。

PWA的开发包括:
1.响应式Web设计,又称RWD(媒体查询,图像响应,断点,网格,Flexbox)
2.制作应用程序的最佳做法(可访问性,优化)
3.服务人员(客户端和服务器之间的网络代理)

我将首先在这里谈论服务人员。

服务人员可以拦截要发送给服务器的用户请求,也可以按照我们的命令更改请求。 举个简单的例子:当服务器处于脱机状态并且没有响应时,我想显示“ Customized Offline”消息,而不是T-Rex Game

SW是基于事件的过程,可在客户端的浏览器上工作。

  1. 注册(使用navigator.serviceWorker)
  2. 安装(引入新的软件后,有机会将文件添加到缓存中)
  3. 激活(引入新的软件时,有机会删除旧的缓存文件)
  4. 提取(它运行的每个页面加载,这里有机会拦截网络请求)

使用SW的最佳技术是“ 缓存优先” 。 意味着首先检查缓存中的文件(如果不可用,然后从网络获取)。

  self.addEventListener('fetch',fetchEvent => { 

const request = fetchEvent.request;

fetchEvent.respondWith(
//首先从缓存中检查
caches.match(请求)
.then(responseFromCache => {
如果(responseFromCache){
返回responseFromCache
}
})//否则从网络获取
返回fetch(request); )//结束responseWith});

就像我们可以从网络中离线获取一样,然后显示自定义的离线页面

  self.addEventListener('fetch',fetchEvent => { 

const request = fetchEvent.request;

fetchEvent.respondWith(

返回获取(请求)
//从缓存中获取离线页面
.catch(错误=> {
返回caches.match('/ offline.html');
//安装事件时页面必须保存在缓存中
}); )//结束responseWith});

甚至我们也可以将图像缓存在单独的缓存中,以便在您的软件中更好地管理缓存。

  if(request.headers.get('Accept')。includes('image')){//首先克隆图像请求 
const copy = responseFromFetch.clone();
fetchEvent.waituntil(
caches.open(imageCacheName)
.then(imageCache => {//保存在缓存中
返回imageCache.put(请求,复制)
})
);}

因此,就像使用乐高积木一样,在需要使用该积木以满足您的需求的地方。 因此,只要考虑一下任何块结构,然后再实现即可。

希望这能给您有关服务人员的概述