你希望偶尔断网的时候,网站也能正常工作吗?就像 YouTube在没有 Wi-Fi 的时候依然允许你下载视频一样。
你想要你的网站也能做同样的事情吗,即使没网,也可以访问网站?
今天我们将详细介绍如何创建一个值得信赖的网站——始终为用户提供服务,即使是在离线的条件下。
我们将以 HTML5 游戏为例,因为,谁会不喜欢一款好游戏呢,对吧?
首先,让我们谈谈为什么要去往离线网站的赛道。
想象一下:不稳定的互联网、处于偏远地区以及容易掉线的连接——并不是每个人都能拥有流畅、不间断的互联网流量。
为用户提供离线选项,才能确保他们始终能够尽情享受内容,无论他们身处野外还是在飞机上。
一切为了提升用户体验!
可以将 Service Workers 视为网站离线性能的后台工作人员。他们就像网站的保镖,决定在互联网中断时显示什么。
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
.then(function(registration) {
console.log('Service Worker registered with scope:', registration.scope);
}).catch(function(error) {
console.error('Service Worker registration failed:', error);
});
}
</script>
service-worker.js
)中,存放想要离线使用的东西:var CACHE_NAME = 'my-website-cache-v1';
var urlsToCache = [
'/',
'/styles/main.css',
'/scripts/main.js',
'/images/logo.png'
];
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Opened cache');
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request)
.then(function(response) {
if (response) {
return response;
}
return fetch(event.request);
})
);
});
对于 HTML5 游戏以及任何其他必须离线运行的内容,确保事先已做好所有准备工作:缓存 HTML、CSS、JavaScript、图像——囊括游戏流畅运行所需的一切。
就像我们下载猫咪视频,之后可在YouTube上播放一样,我们想让用户直接从网站下载游戏文件:
<a href="/path/to/game.zip" download>Download Game</a>
测试:在大功告成之前,别忘了自己先试一试。
可以用Chrome DevTools的应用程序面板来测试网站离线行为并进行任意调整。
优化:如果想要网站更加出众的话,可以考虑延迟加载资源以及巧妙使用缓存。
如果你还想网站稍后赶上服务器的话,那么不妨添加一些后台同步。
让我们的网站在没有互联网的情况下依然可以离线使用一个双赢的举措。这样一来,即使没有网,用户无论身在何处,都可以深入了解我们网站的内容。
引入Service Workers、缓存必需内容、以及加入下载功能,这些都为出色的离线体验奠定了基础。
在没有互联网的情况下,能够提供离线服务的网站,才会成为用户的首选。
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8