APP封装从一门开始
一门提供APP封装底层开发框架,一键在线APP封装,200+原生APP模块,2000+JS映射接口按需自助封装

app中做h5页面的缓存优化

移动应用可以内置网页,也可以通过 webview 加载网页,使用 webview 加载网页相对于内置网页更加灵活,但是相对于本地编写的页面加载速度会慢一些,同时因为网络状况原因已经常会出现加载失败、服务器宕机等问题,因此做好缓存优化显得尤为重要。本文将介绍在 App 中实现网页缓存的原理和具体实现。

## 一、缓存的优点

移动网页缓存有很多优点,其中最大的一个优点就是可以减少用户等待时间,提升用户体验,其他优点包括:

1. 减少网络请求次数,降低带宽消耗,减轻服务器负载;

2. 节约用户流量,缓存过的页面可离线访问;

3. 可以更好的管理网页变化,掌控网页生命周期;

4. 提高网页的加载速度,降低用户流失率。

## 二、缓存的分类

对于 H5 页面缓存,大致分为两种缓存:内存缓存和磁盘缓存。

### 1. 内存缓存

内存缓存只需要在内存中缓存数据,相比磁盘缓存读写速度更快,但也更加易失,不利于网页的长期保留。内存缓存的优点是可以提高加载速度,同时缓存占用内存较小,但当内存不足时会导致系统自动清除缓存,应用重启后缓存会被清空。

### 2. 磁盘缓存

磁盘缓存是将数据保存到本地文件中,因此存储的数据能够长期保存,适合长期使用的数据。相比内存缓存,磁盘缓存占用更多存储空间,但相比内存缓存来讲更加稳定,可以在应用重启后长期保留。

## 三、“缓存过期”、“缓存有效期”和“etag”标识

通常情况下,缓存数据是有时效性的,因此如何判断缓存数据能够被使用,这里就需要了解“缓存过期”、“缓存有效期”和“etag”标识。

### 1. 缓存过期

缓存过期是指缓存数据被记录的时间超过了规定时间,也就是说数据已经过时,需要重新请求获取,此时应用会重新请求服务器获取新的网页数据,如果数据未过期,则可以直接读取缓存,不必再向服务器重新请求数据。

### 2. 缓存有效期

缓存有效期是指缓存数据的生命周期,也就是规定缓存的时间,当时间到了,即使数据没有过期也需要重新请求获取,再次更新缓存。

### 3. etag 标识

etag 是服务器用来判断资源是否变化的标识,通常情况下,etag 由服务器生成,客户端传递给服务器,服务器利用 etag 进行比对判断,如果服务器的 etag 没有变化,返回一个304状态码,客户端可以直接访问缓存数据。

## 四、缓存实现

在实际开发中,缓存数据通常使用以下两种方式保存:

### 1. 硬盘缓存

硬盘缓存是指将需要缓存的网页内容以文件的形式保存到手机本地存储中,按照文件地址进行管理,同时配合缓存失效和有效期设置。

具体实现如下:

1. 首先获取需要缓存的 URL 地址;

2. 根据 URL 地址生成文件名,并判断文件是否存在;

3. 如果缓存文件存在并且未过期,则从文件中读取数据并渲染页面,否则重新请求服务器数据并更新缓存文件。

这种方式相比较于内存缓存较为稳定,但相应的也需要占用更多的存储空间。

### 2. 内存缓存

内存缓存一般需要使用 Android 系统自带的 LruCache 类或者开源框架 Glide、Fresco 等,这里以 LruCache 为例简单介绍如何使用。

LruCache 是一种数据结构,能够根据 访问时间 来移除不常用的对象,同时也可以设置缓存的最大值,防止占用过多内存。

具体实现如下:

1. 初始化缓存空间 `LruCache cache = new LruCache(maxMemorySize)`;

2. 将 URL 地址作为 key,生成对应 Bitmap 的缓存对象,并加入到 LRU 缓存中;

3. 如果有需要使用缓存的地方,则从缓存对象中获取 Bitmap 对象,如果对象不为空,则直接使用缓存的 Bitmap。

需要注意的是,内存缓存的一致性需要注意,需要在发生页面变化时及时刷新缓存。

## 五、总结

实现网页缓存,能够大幅度提高网页的性能和用户体验,同时也降低了网络带宽消耗和服务器的负担。本文介绍了缓存的基本分类、缓存过期、有效期和 etag 标识以及缓存的两种实现方式,但也需要根据具体情况选择合适的缓存方式,比如开发高质量的应用、避免使用硬盘缓存和提高通讯效率等等。


相关知识:
怎么做到h5网页唤醒app
在移动互联网时代,h5网页是一个非常重要的载体,不仅可以快速构建出各种功能,而且可以让用户直接通过浏览器访问,节省部分用户下载应用的流量和时间,但很多功能还是需要通过特定的应用程序才能实现,这个时候就需要在h5网页中唤醒app。本文将从原理、实现和适用场景
2023-05-26
社交app公司招聘h5游戏开发
随着智能手机的普及,移动游戏成为了社交app上极具活力的一部分。越来越多的社交app公司开始关注在其平台上添加游戏功能,为其用户提供更多的有趣内容,同时也为自身带来更多的收益。而H5游戏,作为一种优势在低成本、高效率、跨平台等方面的技术,已经开始成为了越来
2023-05-26
基于h5的手机端app开发
随着移动互联网的快速发展,手机应用的需求也越来越高。传统的原生应用需要下载、安装和更新,而基于HTML5的手机端应用可以直接通过浏览器访问,不需要下载和更新,节约了用户的存储空间和流量,也方便了用户的使用。本文将介绍基于h5的手机端应用开发的原理和流程。一
2023-05-26
h5制作淘宝类app
随着移动互联网的不断发展,越来越多的人开始关注手机应用程序的开发。而作为一个程序员或者是一个网站博主,应用程序的开发也是一个不错的选择。本文将介绍如何使用h5制作淘宝类app。首先,我们需要了解淘宝类app的特点和基本功能。淘宝类app的主要功能就是让用户
2023-05-25
h5如何做个app
HTML5网页应用程序(Web Apps)可以通过一些框架工具和编程技巧变成真正的移动应用程序(App)。下面是一些原理和详细介绍。1. 框架工具HTML5本身可以作为一个app的开发工具,但为了更快速的实现,各大开发公司和社区提供了很多开源和商业的框架工
2023-05-25
h5可以封装app吗
H5,即HTML5,是Web前端技术的一种,其最大特点就是能够跨平台运行,不需要任何插件,兼容性非常好。但是,H5本身是运行在Web浏览器中的,那么能否使用H5技术封装成App,使得具有Web的优势,同时能够像App一样直接在手机上运行呢?答案是肯定的。本
2023-05-25
h5开发app的弊端
HTML5作为前端开发技术的代表之一,不仅在传统的网页开发中发挥着重要的作用,同时也在移动应用开发方面逐渐得到重视,许多开发者也热衷于采用H5技术来开发各种移动应用,其中不乏一些成功的案例。然而,任何一种技术都有其自身的优劣,并非万能之术,H5在开发移动应
2023-05-25
h5混合开发app流程
H5混合开发技术是一种将Web技术应用到原生应用开发中的技术,它可以使得我们可以通过HTML、CSS等Web前端技术去开发原生应用,同时保留原有的Native特性,如调用系统API等。H5混合开发的优点包括:1、开发速度较快,节约开发成本,同时能够应对不同
2023-05-25
h5打包网页打包app
H5是一种基于HTML5、CSS3、JavaScript等网络技术构建的移动应用开发方式,也称之为Web App。它的特点是兼容性强、开发效率高、可维护性强等优点,能够让开发者快速构建移动应用,同时让用户可以轻松地通过浏览器获取和使用应用。然而,由于一些特
2023-05-25
h5打包app域名
H5是一种基于Web技术的应用程序开发方式,可以实现应用的跨平台和在线即时更新。随着移动互联网的发展,H5应用变得越来越受欢迎,也出现了很多将H5应用打包成原生App的工具,比如Cordova、PhoneGap等。打包H5应用成原生App有很多优点,比如可
2023-05-25
app与h5开发成本
随着手机互联网的快速发展,移动应用的需求也越来越高。但是不同的应用场景需要不同的技术选择,如何选择适合自己的技术,对于开发者和客户来说都是很重要的一个问题。在移动应用方面,开发APP和H5是两种常用的技术,下面我将从成本的角度介绍这两种技术的特点以及在实际
2023-05-25
app内嵌h5小游戏开发
App内嵌H5小游戏是一种新兴的互动方式,近年来受到越来越多用户的欢迎。这种游戏是以H5为基础的,通过App内嵌的方式让用户在App中进行游戏,既可以免去下载额外的游戏,也可以为用户提供丰富的消遣方式。一、原理H5小游戏是指基于HTML5标准和相关技术,通
2023-05-25
©2015-2021 一门APP yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-3