webSocket、web woker、service woker、Web Storage

webSocket

WebSocket它是为了解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮训问题而生的,它实现了多路复用,它是全双工通信。

webSocket协议下客服端和浏览器可以同时发送信息。

建立了WenSocket之后服务器不必在浏览器发送request请求之后才能发送信息到浏览器。这时的服务器已有主动权想什么时候发就可以发送信息到服务器。而且信息当中不必在带有head的部分信息了与http的长链接通信来说,这种方式,不仅能降低服务器的压力。而且信息当中也减少了部分多余的信息。

HTTP的长连接与websocket的持久连接

WebSocket和HTTP的区别

http协议是用在应用层的协议,它是基于tcp协议的,http协议建立链接也必须要有三次握手才能发送信息。

http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个request对应一个response。长链接是在一定的期限内保持链接。保持TCP连接不断开。

客户端与服务器通信,必须要有客户端发起然后服务器返回结果。

客户端是主动的,服务器是被动的。

websocket的持久连接

只需建立一次Request/Response消息对,之后都是TCP连接,避免了需要多次建立Request/Response消息对而产生的冗余头部信息。

web woker

Chrome浏览器中发起资源请求的有6个线程;但是只有1个线程负责渲染页面——称为UI主线程——浏览器中所有的代码只能由一个线程来执行。

问题:

若浏览器加载了一个很耗时的JS文件(可能影响DOM树结构),浏览器必须等待该文件执行完成才会继续执行后续的代码(HTML/CSS/JS等)——如果一个JS文件要执行10s(可能有很深的循环/递归等科学计算/解密),会发生什么?——执行耗时JS任务过程中,会暂停页面中一切内容的渲染以及事件的处理。

解决:H5新特性——Web Worker

Worker的本质:

就是一个执行指定任务的独立线程;且该线程可以与UI主线程进行消息数据传递。

使用方法:

       HTML文件中:

                var w = new Worker('js/x.js')

                w.postMessage('发送给Worker线程的消息');

                w.onmessage = function(e){
                         e.data; //来自Worker线程的消息

                }

       JS文件中:

                onmessage = function(e){
                         var data = e.data;  //接收UI线程的消息

                         //执行耗时任务....

                         postMessage(result);   //给UI线程发送消息

                }

Worker任务不允许直接操作DOM树,也不允许使用任何的BOM对象

需要的数据只能由UI主线程来传递,处理的结果也必须交由UI线程来显示。

service woker

service woker的使用

service worker URL 通过 serviceWorkerContainer.register() 来获取和注册。

如果注册成功,service worker 就在 ServiceWorkerGlobalScope 环境中运行; 这是一个特殊类型的 woker 上下文运行环境,与主运行线程(执行脚本)相独立,同时也没有访问 DOM 的能力。
service worker 现在可以处理事件了。

service worker 控制的页面打开后会尝试去安装 service worker。最先发送给 service worker 的事件是安装事件(在这个事件里可以开始进行填充 IndexDB和缓存站点资源)。这个流程同原生 APP 或者 Firefox OS APP 是一样的 — 让所有资源可离线访问。

oninstall 事件的处理程序执行完毕后,可以认为 service worker 安装完成了。

下一步是激活。当 service worker 安装完成后,会接收到一个激活事件(activate event)。 onactivate 主要用途是清理先前版本的service worker 脚本中使用的资源。

Service Worker 现在可以控制页面了,但仅是在 register() 成功后的打开的页面。也就是说,页面起始于有没有 service worker ,且在页面的接下来生命周期内维持这个状态。所以,页面不得不重新加载以让 service worker 获得完全的控制。

Promise 是一种非常适用于异步操作的机制,一个操作依赖于另一个操作的成功执行。这是 service worker 的核心工作机制。点我promise

Web Storage

Web StorageHTML5引入的一个非常重要的功能,在前端开发中经常用到,可以在客户端本地存储数据,类似HTML4cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KBWeb Storage又分为两种:
sessionStoragelocalStorage

sessionStorage将数据保存在session中,浏览器关闭也就没了;
localStorage则一直将数据保存在客户端本地,除非主动删除数据,否则数据是永远不会过期的;
不管是sessionStorage,还是localStorage,可使用的API都相同,常用的有如下几个方法:

  1. 保存数据:localStorage.setItem( key, value ); sessionStorage.setItem( key, value );
  2. 读取数据:localStorage.getItem( key ); sessionStorage.getItem( key );
  3. 删除单个数据:localStorage.removeItem( key ); sessionStorage.removeItem( key );
  4. 删除所有数据:localStorage.clear( ); sessionStorage.clear( );
  5. 得到某个索引的key:localStorage.key( index ); sessionStorage.key( index );

两个都有属性 length 表示key 的个数,也即 key 长度:

var keyLength1 = localStorage.length; var keyLength2 = sessionStorage.length;

keyvalue 都必须为字符串,换言之,web Storage的API只能操作字符串

Web项目存储数据常用的方案:

服务器端存储
  • 数据库存储,如商品、用户等核心数据
  • Session/内存存储,如用户的登录信息
客户端存储
  • Cookie存储,如用户偏好、访问历史,浏览器兼容性好但处理麻烦且容量限制
  • WebStorage存储,如用户偏好、访问历史等安全要求的数据,老IE不兼容但易使用且容量大

Web Storage存储具体涉及到两个对象:

window.sessionStorage:

类数组对象,通过key=>value对存储字符串数据——会话级存储

  • 添加数据:sessionStorage[‘key’] = ‘value’
  • 修改数据:sessionStorage[‘key’] = ‘newValue’
  • 删除数据:delete sessionStorage[‘key’]
  • 获得数据:var v = sessionStorage[‘key’]
window.localStorage:

类数组对象,通过key=>value对存储字符串数据——本地/跨会话级/永久存储

  • 添加数据:localStorage[‘key’] = ‘value’
  • 修改数据:localStorage[‘key’] = ‘newValue’
  • 删除数据:delete localStorage[‘key’]
  • 获得数据:var v = localStorage[‘key’]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值