前端基础_离线Web应用概述

news2024/12/25 9:22:25

离线Web应用概述

在Web应用中使用缓存的原因之一是为了支持离线应用。在全球互联的时代,离线应用仍有其实用价值。当无法上网的时候,你会做什么呢?你可能会说如今网络无处不在,而且非常稳定,不存在没有网络的情况。但事实果真如此吗?下面这些问题,你考虑到了吗?

 我们乘坐火车过隧道的时候信号好吗?

 我们使用移动网络设备的信号好吗?

 我们要去给客户做演示的时候,一定能有信号吗?

越来越多的应用移植到了Web上,我们倾向于认为用户拥有24小时不间断的网络连线。但事实上,网络连接中断时有发生,例如,在乘坐飞机的情况下,可预见的中断时间一次就可能达到好几个小时。

间断性的网络连接一直是网络计算系统致命的弱点。如果应用程序依赖于与远程主机的通信,而这些主机又无法连接时,用户就无法正常使用应用程序了。不过当网络连接正常时,Web应用程序可以保证及时更新,因为用户每次使用,应用程序都会从远程位置更新加载相关数据。

如果应用程序只需要偶尔进行网络通信,那么只要在本地存储了应用资源,无论是否连接网络它都可用。随着完全依赖于浏览器的设备的出现,Web应用程序在不稳定的网络状态下还能够持续工作就变得更加重要。在这方面,不需要持续连接网络的桌面应用程序历来被认为比Web应用程序更有优势。HTML5的缓存控制机制综合了Web应用和桌面应用两者的优势:基于Web技术构建的Web应用程序,可在浏览器中运行并在线更新,也可在脱机情况下使用。然而,因为目前的Web服务器不为脱机应用程序提供任何默认的缓存行为,所以要想使用这一新的离线应用功能,必须在应用中明确声明。HTML5的离线应用缓存使得在无网络连接状态下运行应用程序成为可能。这类应用程序用处很多,如在书写电子邮件草稿时就无须连接互联网。HTML5中引入了离线应用缓存,有了它Web应用程序就可以在没有网络连接的情况下运行。

应用程序开发人员可以指定HTML5应用程序中,具体哪些资源(HTML、CSS、JavaScript和图像)脱机时可用。离线应用的适用场景很多,例如:

 阅读和撰写电子邮件。

 编辑文档。

 编辑和显示演示文档。

 创建待办事宜列表。

使用离线存储,避免了加载应用程序时所需的常规网络请求。如果缓存清单文件是最新的,浏览器就知道自己无须检查其他资源是否最新。大部分应用程序可以非常迅速地从本地应用缓存中加载完成。此外,从缓存中加载资源(而不必用多个HTTP请求确定资源是否已经更新)可节省带宽,这对于移除Web应用是至关重要的。

缓存清单文件中标识的资源构成了应用缓存(Application Cache),它是浏览器持久性存储资源的地方,通常在硬盘上。有些浏览器向用户提供了查看应用程序缓存中数据的方法。例如,在最新版本的Firefox中,about:cache页面会显示应用程序缓存的详细信息,提供了查看缓存中的每个文件的办法。

https://www.bilibili.com/video/BV1kR4y167Cp/?p=2&spm_id_from=pageDriver&vd_source=a7816e3b2a3a67ac39dc87f6bf92421cicon-default.png?t=MBR7https://www.bilibili.com/video/BV1kR4y167Cp/?p=2&spm_id_from=pageDriver&vd_source=a7816e3b2a3a67ac39dc87f6bf92421c

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【服务器数据恢复】误操作导致ocfs2文件系统被格式化的数据恢复案例

服务器故障: 用户误操作将linux文件系统误装入到Ocfs2文件系统的数据卷上,导致原始Ocfs2文件系统被格式化为Ext4文件系统。 因为Ext4文件系统每隔几百兆就会写入文件系统的原始信息,所以本案例中的原始Ocfs2文件系统中的数据可能受到一定程度…

搭建开源版个人图床

在微博图床、gitee、jsDelivr 陆续被 ban 的今天,很有必要搭建自己的图床系统了。 兰空图床 兰空图床官网:https://www.lsky.pro docker版本:https://hub.docker.com/r/halcyonazure/lsky-pro-docker 本次讲解使用 docker 版本进行部署使用 …

linux跟踪技术之ebpf

ebpf简介 eBPF是一项革命性的技术,起源于 Linux 内核,可以在操作系统内核等特权上下文中运行沙盒程序。它可以安全有效地扩展内核的功能,而无需更改内核源代码或加载内核模块。 比如,使用ebpf可以追踪任何内核导出函数的参数&…

漫画电学原理

电是什么 电压 电压是两点的电势差。 电流是指每秒在导线中流动的电量。 电功率是指在1s内消耗的电能。 电的本质是什么 万物都是有原子构成,原子有原子核(正电),核外电子(负电)构成。电子的定向移动形成了电。 电子离开原子,原子的电子减少,从而带正电。带正电的…

互联网时代“陨落”,国家发布元宇宙战略的信号对失业和担心失业的我们带来了什么启迪?

互联网这头“猪 ”真的掉下来了 流量红利已经一去不复返了!3年前业界其实已经发出各种密集信号,在当时无论是BAT还是一些经济学家在3年前都已经预测过,互联网的流量模式已经衰竭,并且它将一去不复返。 曾经处于互联网大潮的我们…

day10Git

1.Git介绍 1.1版本控制(理解) 无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况 1.2开发中存在的问题(理解) 程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光…

HTC FOCUS 3连接FOHEART H1数据手套

本教程介绍使用H1数据手套与HTC腕带式追踪器驱动VR中的虚拟手运动,实现手部的追踪及定位。 需要准备的硬件: 1、FOHEART H1数据手套 2、HTC VIVE Focus 3一体机 3、HTC VIVE 腕带式追踪器 01 一体机连接腕带追踪器 首先断开Focus3的手柄&#x…

【JavaWeb】Mybatis深度进阶练习

学习目标 能够使用映射配置文件实现CRUD操作能够使用注解实现CRUD操作 文章目录1、配置文件实现CRUD1.1 环境准备1.2 查询所有数据1.2.1 编写接口方法1.2.2 编写SQL语句1.2.3 编写测试方法1.2.4 起别名解决上述问题1.2.5 使用resultMap解决上述问题1.2.6 小结1.3 查询详情1.3.1…

(一) 初识python

1. python的特点: 可读性强 可读性远比听上去重要的多得多。一个程序会被反复的修改,可读性意味这让你可以在更短时间内学习和记忆,直接提高生产率。高效、简洁 研究证明,程序员每天可编写的有效代码是有限的。完成同样功能只用一…

浙大MBA复试经验分享——复试备考流程及要点提醒

最近身边有很多小伙伴都在咨询关于复试的问题,趁着今天有空把我的复试准备过程按照时间线梳理出来分享给大家,希望可以帮助到大家。 联考结束后,趁着考完印象还深刻,我们首先要做的就是估分(辅导班或者小红书、知…

【06】概率图推断之变量消除算法

概率图推断之变量消除算法 文章目录说明性示例消除变量因子因子运算排序变量消除算法举例证据变量消除的时间复杂度选择变量消除顺序接下来,我们将注意力转向图模型中的推断问题。 给定概率模型(如贝叶斯网络或马尔可夫随机场),…

开个脑洞,带你写一个自己的极狐GitLab CI Runner

极狐GitLab Runner 是极狐GitLab CI/CD 执行的利器,能够帮助完成 CI/CD Pipeline Job 的执行。 目前极狐GitLab Runner 是一个开源项目,以 Golang 编写。 极狐Gitlab 有个不错的特性,就是你可以使用自己的极狐Gitlab CI Runner。可是&#xf…

Oracle 单实例如何开机自启动

作者 | JiekeXu来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看 Oracle 单实例如何开机自启动,欢迎点击…

盘点JAVA程序猿必备的webserver

作为java工程师,除了必备的java编程能力,我们还需要些什么呢? 一般而言,要从工程师进化为构架师,一个合格的java工作者需要掌握一些关于构架的知识, 比如互联网的结构,服务器的建设&#xff0c…

PhotoShop入门

PhotoShop入门 零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub&am…

JAVA结构、循环语句

一、 if选择结构 代码示例: int num 1;if (num 1) {System.out.println("壹");} else if (num 2) {System.out.println("贰");} else if (num 3) {System.out.println("参");}输出: 壹 二、switch结构 1.switch 会根…

HNU编译原理实验四cminus_compiler-2022-fall

前言:原本想认认真真把这个实验给完成的,但是当时时间太赶了,一周要做三个实验,所以这次实验基本都是抄的了,有些地方也抄的不明不白,不过懂不懂这个对课程学习的帮助并不是很大,毕竟这个实验的…

vue 弹窗 惯性滚动 加速滚动

惯性滚动组件 新建文件 components/scroll-viwe <template><div v-if"visiable"><div class"mapbox-result-scroll-hidden"><div class"mapbox-result-wrap" ref"resultWrap"><div class"mapbox-resu…

服务了可口可乐、海底捞、某头部商业银行,我有这些体会

我非常喜欢巴西队的内马尔&#xff0c;他曾说&#xff1a;“你可能会看到我一秒钟、一分钟、一天不开心&#xff0c;但第二天你会看到我的笑脸。” 在 Authing 工作两年多了&#xff0c;在这期间&#xff0c;我为可口可乐、海底捞、某头部商业银行等客户做了交付&#xff0c;在…

jq实现倒计时功能

效果如下&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>jq实现…