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

news/2024/11/15 1:34:46/

离线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/BV1qL411u7eE


http://www.ppmy.cn/news/9456.html

相关文章

编写 MBR 主引导记录

文章目录前言mbs.S代码实验操作前言 本博客记录《操作系统真象还原》第二章最后一节的实验操作~ 实验需要安装Bochs软件,具体可食用Bochs下载安装博客。 实验环境:ubuntu18.04VMware 实验内容:在屏幕上打印字符串“1 MBR”,背…

人工智能期末试卷

一、简答题(共 24 分) 若将人看成一个信息处理系统,1) 人的智能具有哪些特征?2) 举例说明哪一特征是最重要的并 3) 阐述其与实现通用人工智能的关系。(要求:2、3 小问一定用自己的语言作答!)(8 …

vue3学习记录二组件之间的通信方式-下

三 defineProps和defineEmits - defineProps 和 defineEmits 都是只能在 <script setup> 中使用的编译器宏。 - 不需要导入 - defineProps 接收与 props 选项相同的值&#xff0c;defineEmits 接收与 emits 选项相同的值。 - defineProps 和 defineEmits 在选项传入后&a…

什么是密码管理器?它安全吗?

密码管理器或密钥管理员是一类用于生成、检索、保存及管理复杂密码、数字签名的措施&#xff0c;可以由硬件或软件实现。因此&#xff0c;密码管理器一般也称作密码管理软件。复杂密码的生成一般按需要以随机算法产生&#xff0c;而密码数据则保存于一个以密码、数字签名等方式…

代码随想录拓展day7 649. Dota2 参议院;1221. 分割平衡字符串;5.最长回文子串;132. 分割回文串 II;673.最长递增子序列的个数

代码随想录拓展day7 649. Dota2 参议院&#xff1b;1221. 分割平衡字符串&#xff1b;5.最长回文子串&#xff1b;132. 分割回文串 II&#xff1b;673.最长递增子序列的个数 贪心和动态规划的题目。因为贪心其实没什么规律&#xff0c;所以就简要记录了。 649. Dota2 参议院 …

基于Vue和SpringBoot的宾馆管理系统的设计和实现

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

CAS 的使用场景 CAS的ABA问题的优化 以及 synchronized 的三大优化

目录 &#x1f388;专栏链接:多线程相关知识详解 一.什么是CAS 二.CAS最常用的两个场景 Ⅰ.实现原子类 Ⅱ.实现自旋锁 三.CAS的ABA问题 四.优化解决CAS的ABA问题 五.synchronized的优化 Ⅰ.锁升级/锁膨胀 Ⅱ.锁消除 Ⅲ.锁粗化 一.什么是CAS CAS&#xff08;Compar…

ThreadLocal

ThreadLocal是什么ThreadLocal&#xff0c;本地线程变量&#xff0c;ThreadLocal中填充的是当前线程的变量&#xff0c;该变量对其他线程来说是封闭且隔离的。ThreadLocal的静态内部类ThreadLocalMap为每个Thread都维护了一个数组table&#xff0c;ThreadLocal确定了一个数组下…