从快速的首次加载开始
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从快速的首次加载开始相关的知识,希望对你有一定的参考价值。
Progressive Web Apps 应该能够快速启动并且立即可用。目前,我们的天气应用能够快速启动,但是还不能使用,因为还没有数据。我们能够发起一个 AJAX 请求来获取数据,但是额外的请求会让初次加载时间变长。取而代之的方法是,在初次加载时提供真实的数据。
插入天气预报信息
在本实例中,我们将会静态地插入天气预报信息,但是在一个投入生产环境的应用中,最新的天气预报数据会由服务器根据用户的 IP 位置信息插入。
这代码已经包括了所需的资料,那就是我们在前个步骤所用的 initialWeatherForecast
。
区分首次运行
但我们如何知道什么时候该展示这些信息,那些数据需要存入缓存供下次使用?当用户下次使用的时候,他们所在城市可能已经发生了变动,所以我们需要加载目前所在城市的信息,而不是之前的城市。
用户首选项(比如用户订阅的城市列表),这类数据应该使用 IndexedDB 或者其他快速的存储方式存放在本地。 为了尽可能简化,这里我们使用 localStorage 进行存储,在生产环境下这并不是理想的选择,因为它是阻塞型同步的存储机制,在某些设备上可能很缓慢。
首先,让我们添加用来存储用户首选项的代码。从代码中寻找以下的TODO注解:
// TODO add saveSelectedCities function here
然后将以下的代码粘贴在TODO注解的下一行。
// 将城市数据存入 localStorage.
app.saveSelectedCities = function() {
var selectedCities = JSON.stringify(app.selectedCities);
localStorage.selectedCities = selectedCities;
};
接下来,添加一些启动代码来检查用户是否已经订阅了某些城市,并渲染它们,或者使用插入的天气数据来渲染。从代码中寻找以下的TODO注解:
// TODO add startup code here
然后将以下的代码粘贴在TODO注解的下一行。
以上是关于从快速的首次加载开始的主要内容,如果未能解决你的问题,请参考以下文章
我可以优化 Meteor Android Cordova 应用程序的首次加载时间吗?
推送通知作为与 Facebook Messenger Bot 的首次交互?