如何用keepAlive实现标签页缓存

什么是KeepAlive

        首先,要明确所说的是TCP的 KeepAlive 还是HTTP的 Keep-Alive。

        TCP的KeepAlive和HTTP的Keep-Alive是完全不同的概念,不能混为一谈。

        实际上HTTP的KeepAlive写法是Keep-Alive,跟TCP的KeepAlive写法上也有不同。

TCP的KeepAlive

        TCP的KeepAlive是侧重在保持客户端和服务端的连接,一方会不定期发送心跳包给另一方,当有一方断掉的时候,没有断掉的定时发送几次心跳包,如果间隔发送几次,对方都返回的是RST(Reset),而不是ACK,那么就释放当前连接。

🔑 核心机制:定时发送探测包(心跳包),检测连接是否仍然有效。

举例:

客户端突然断网了,但服务端不知道:

        没有 TCP Keepalive:服务端会一直保留这个连接,直到程序主动读写失败,如果保持连接的状态几天,几个月,这对服务器资源的影响是很大的。

        有 TCP Keepalive:服务端会在一段时间后探测失败,主动关闭连接,释放资源。

HTTP的keep-Alive

        普通的 HTTP 连接是客户端连接上服务端,等结束请求后,由客户端或服务端进行HTTP连接的关闭。下次再发送请求时,客户端再发起连接,传送数据,关闭连接。如此流程反复。

        但是一旦客户端发送 connection:keep-alive 头给服务端,且服务端也接受这个 keep-alive 的话,这个连接就可以复用了,一个 HTTP 处理完之后,另外一个 HTTP 数据直接从这个连接走了,减少新建和断开TCP连接的消耗。

🔑 核心机制:复用已有TCP连接,减少TCP连接的建立与断开。

举例:

你访问一个网页,里面有 10 张图片:

        没有 Keep-Alive:建立 11 次 TCP 连接(1 次 HTML + 10 次图片)

        有 Keep-Alive:可能只建立 1 次 TCP 连接,复用 10 次请求

二者对比

        注意不要混为一谈,HTTP 的 Keep-Alive 和 TCP 的 keepalive 没有直接依赖关系

        TCP 的 KeepAlive 意图在于检测连接是否存活(保活),属于传输层。

        HTTP Keep-Alive 的意图在于短时间内保持连接复用,减少TCP 连接建立和关闭的开销,提高性能,属于应用层。

举例:

        HTTP Keep-Alive:就像你用水管洗车,洗完一辆车后,不马上关水龙头,等下一辆车来的时候继续用,省得每次开关水龙头。

        TCP Keepalive:就像你家里没人,但水龙头一直开着,水管公司(操作系统)过几个小时来看看有没有人用水,没人用水就关掉水管。

       

Vue中的KeepAlive

        vue可以通过 <keep-alive>包裹组件,实现缓存,下次使用时不需要重新创建该组件。

        实现切换(后退)不刷新主要依据keep-alive组件的 activated 和 deactivated这两个生命周期钩子函数。

vue钩子函数的执行顺序

不使用keep-alive

        beforeRouteEnter → created → mounted → destroyed

使用keep-alive

        初次进入页面,beforeRouteEnter → created → mounted → activateddeactivated        

        再次进入缓存的页面,只会触发beforeRouteEnter → activateddeactivatedcreated和mounted不会再执行

        activated 在 keep-alive 组件激活时调用,deActivated 在 keep-alive 组件失活时调用。

问题

        存在一个问题:keep-alive包裹的组件中有滚动元素时,是不会存储页面滚动位置的,若需要存储滚动位置,需要自行记录页面的滚动位置,并在activated时赋值。 

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

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

相关文章

数据库隔离级别

隔离级别决定了事务之间的可见性规则&#xff0c;直接影响数据库的并发性能和数据一致性。SQL 标准定义了 4 种隔离级别&#xff0c;从低到高依次为&#xff1a;读未提交→读已提交→可重复读→串行化。隔离级别越高&#xff0c;对并发问题的解决能力越强&#xff0c;但对性能的…

基于Python flask的电影数据分析及可视化系统的设计与实现,可视化内容很丰富

摘要&#xff1a;基于Python的电影数据分析及可视化系统是一个应用于电影市场的数据分析平台&#xff0c;旨在为广大电影爱好者提供更准确、更详细、更实用的电影数据。数据分析部分主要是对来自猫眼电影网站上的数据进行清洗、分类处理、存储等步骤&#xff0c;数据可视化则是…

TCP通讯开发注意事项及常见问题解析

文章目录一、TCP协议特性与开发挑战二、粘包与拆包问题深度解析1. 成因原理2. 典型场景与实例验证3. 系统化解决方案接收方每次读取10字节2. 丢包检测与验证工具3. 工程化解决方案四、连接管理关键实践1. 超时机制设计2. TIME_WAIT状态优化3. 异常处理最佳实践五、高性能TCP开发…

2021 RoboCom 世界机器人开发者大赛-本科组(复赛)解题报告 | 珂学家

前言 题解 睿抗机器人开发者大赛CAIP-编程技能赛-历年真题 汇总 2021 RoboCom 世界机器人开发者大赛-本科组&#xff08;复赛&#xff09;解题报告 感觉这个T1特别有意思&#xff0c;非典型题&#xff0c;着重推演下结论。 T2是一道玄学题&#xff0c;但是涉及一些优化技巧…

《计算机“十万个为什么”》之 MQ

《计算机“十万个为什么”》之 MQ &#x1f4e8; 欢迎来到消息队列的奇妙世界&#xff01; 在这篇文章中&#xff0c;我们将探索 MQ 的奥秘&#xff0c;从基础概念到实际应用&#xff0c;让你彻底搞懂这个分布式系统中不可或缺的重要组件&#xff01;&#x1f680; 作者&#x…

Django母婴商城项目实践(七)- 首页数据业务视图

7、首页数据业务视图 1、介绍 视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求和生成相应的响应内容,然后在页面或其他类型文档中显示。 也可以理解为视图是MVC架构里面的C部分(控制器),主要处理功能和业务上的逻辑。我们习惯使用视图函数处理HTTP请求,…

android 12 的 aidl for HAL 开发示例

说明&#xff1a;aidl for HAL 这种机制&#xff0c;可以自动生成java代码&#xff0c;app调用可以获取中间过程的jar包&#xff0c;结合反射调用 ServiceManager.getService 方法&#xff0c;直接获取 HAL 服务&#xff0c;不再需要费力在framework层添加代码&#xff0c;方便…

网络安全渗透攻击案例实战:某公司内网为目标的渗透测试全过程

目录一、案例背景二、目标分析&#xff08;信息收集阶段&#xff09;&#x1f310; 外部信息搜集&#x1f9e0; 指纹识别和端口扫描三、攻击流程&#xff08;渗透测试全过程&#xff09;&#x1f3af; 步骤1&#xff1a;Web漏洞利用 —— 泛微OA远程命令执行漏洞&#xff08;CV…

AI视频-剧本篇学习笔记

1.提示词万能框架是什么:ai扮演的角色做什么&#xff1a;解决什么问题怎么做&#xff1a;标准2、剧本模版假设你是一位拥有30年电影拍摄经验的世界顶级导演&#xff0c;拥有丰富的电影拍摄经验和高超的电影拍摄技术&#xff0c;同时也擅长各种影片的剧本创作。我需要你仔细阅读…

A316-HF-DAC-V1:专业USB HiFi音频解码器评估板技术解析

引言 随着高解析度音频的普及&#xff0c;对高品质音频解码设备的需求日益增长。本文将介绍一款专为USB HiFi音频解码器设计的专业评估板——A316-HF-DAC-V1&#xff0c;这是一款基于XMOS XU316技术的高性能音频解码评估平台。产品概述 A316-HF-DAC-V1是一款专业的USB HiFi音频…

超低延迟RTSP播放器在工业机器人远程控制中的应用探索

技术背景 在智能制造高速发展的今天&#xff0c;工业机器人已经从单一的生产作业工具&#xff0c;转变为协作化、智能化的生产伙伴。无论是高精度的多关节机械臂、自主导航的移动机器人&#xff0c;还是与人协同工作的协作机器人&#xff0c;都越来越多地被应用于智能工厂、仓…

Elasticsearch Java 8.x 的聚合 API 及子聚合的用法

背景 Elasticsearch 版本发布的很勤&#xff0c; API 客户端的用法各个版本之间差异也是很大。尤其是 Elasticsearch 8.x 版本直接废弃了 RestHighLevelClient 对象。 Query 和 Aggregation 的 Builder 的用法也有变化。 本文记录项目升级 Elasticsearch API 到 8.x 版本时聚合…

Dify功能熟悉

Dify功能熟悉 文章目录Dify功能熟悉一、介绍1.1 快速开始1.2 官方文档二、workflow2.1 开始和结束2.2 简单示例三、节点3.1 节点一览表3.2 节点-----开始3.3 节点-----LLM3.4 知识检索&#xff08;增强回答准确性&#xff09;3.5 Agent智能体3.6 问题分类器3.7 http四、工具&am…

app引导页设计要点与交互细节详解

在移动应用的设计中&#xff0c;用户第一次打开APP时看到的往往就是app引导页。它不仅是品牌与用户接触的第一道界面&#xff0c;也是决定用户是否愿意继续探索的关键入口。一个设计合理、信息传达清晰的app引导页&#xff0c;能够帮助产品建立专业感与品牌价值&#xff0c;同时…

香港服务器SSH安全加固方案与密钥认证实践

香港服务器SSH安全加固方案与密钥认证实践在数字化时代&#xff0c;服务器安全成为企业不可忽视的重要议题。香港服务器因其地理位置和网络自由优势备受青睐&#xff0c;但同时也面临各种网络安全威胁。本文将深入探讨香港服务器SSH安全加固的核心方案&#xff0c;重点解析密钥…

Python的界面美化库 QDarkStyleSheet

Python的界面美化库 QDarkStyleSheet1、官网先看效果2、github地址3、动态切换主题用法效果代码1、官网先看效果 2、github地址 https://github.com/ColinDuquesnoy/QDarkStyleSheet?tabreadme-ov-file https://qdarkstylesheet.readthedocs.io/en/latest/screenshots.html …

同步本地文件到服务器上的Docker容器

同步本地文件到服务器上的Docker容器 要将本地文件同步到服务器上的Docker容器中&#xff0c;有几种常用方法&#xff1a; 1. 使用 docker cp 命令 # 将本地文件复制到运行中的容器 docker cp /本地/文件/路径 容器名或ID:/容器内/路径# 示例 docker cp ./app.py mycontainer:/…

[学习] 笛卡尔坐标系的任意移动与旋转详解

笛卡尔坐标系的任意移动与旋转详解 文章目录笛卡尔坐标系的任意移动与旋转详解**1. 笛卡尔坐标系基础****2. 坐标变换原理****2.1 平移变换****2.2 旋转变换****3. 组合变换**Python仿真与动态展示**动画说明**&#xff1a;**关键数学原理**&#xff1a;1. 笛卡尔坐标系基础 笛…

论文笔记:Parameter Competition Balancing for Model Merging

neurips 20241 intro近年来&#xff0c;模型融合&#xff08;model merging&#xff09;技术迅速发展&#xff0c;使得可以将多个分别针对不同任务微调后的模型直接集成为一个统一模型&#xff0c;从而实现多任务处理能力&#xff0c;而无需重新访问原始训练数据。然而&#xf…

逆向难度真相:仅用IDA静态分析的极限挑战

逆向难度真相&#xff1a;仅用IDA静态分析的极限挑战 纯IDA逆向难度重排&#xff08;从难到易&#xff09; Python > Go > Java > E语言 > CPython (地狱级难度) IDA困境&#xff1a; 主逻辑完全封装在PYZ/PYC资源中&#xff0c;IDA无法解析字节码结构字符串表只显…