【每日十分钟前端】浏览器1,浏览器缓存。

纯前端浏览器摄像头防盗监控系统实现 运动检测是计算机视觉的基础应用之一,其核心原理是通过连续帧间像素差异识别动态目标。在Web端,借助浏览器原生MediaDevices API获取实时视频流,并结合Canvas 2D上下文的图像处理能力(如difference混合模式或手动像素比对),可构建零依赖、高隐私的轻量级监控逻辑。该技术具备低部署门槛、本地化计算、无后端耦合等工程优势,广泛适用于个人安防、家庭看护、宠物行为监测等生活化场景。本文聚焦于浏览器摄像头调用与Canvas帧差异检测两大关键技术点,详解如何在不引入OpenCV或WASM的前提下 阅读详情

解释:

当第一次访问网站X后,电脑会把网站上的资源下载到电脑上,当我们再次访问网站X的时候,网站会直接从电脑中加载出来,就是缓存。

就是指在本地使用的计算机中开辟一个内存区,同时也开辟一个硬盘区作为数据传输的缓冲区,然后用这个缓冲区来暂时保存用户以前访问过的信息。

好处:

1、缓解服务器压力,不用每次都去请求某些数据;
2、提升性能,本地读取比请求服务器快;
3、减少带宽消耗,当我们使用缓存时,只会产生很小的网络消耗。

强缓存

不会发送请求,直接从缓存中读取资源。
响应头中有:expires、cache-control、pragma为强缓存,浏览器会把资源缓存在memory cache和disk cache中。

cache-control的优先级高于expires。

1、Expires

缓存过期时间,于服务端返回的响应头中,告诉浏览器在这个过期时间之前可以直接从缓存里面获取数据,无需再次请求。

Expires: Fri, 08 Apr 2022 08:30:40 GMT
过期了就得向服务端发请求。

缺点:服务器时间和浏览器时间可能并不一致。

2、Cache-Control

它并没有采取具体的过期时间,用的是使用了max-age过期时长,解决了expires的缺点。

属性:

private:只有浏览器能缓存,中间的代理服务器不能缓存。
no-cache:跳过当前的强缓存,发送http请求,即直接进入协商缓存阶段。
no-store:粗暴地不进行任何形式的缓存。
max-age:缓存保存时长。
s-maxage:正对代理服务器的缓存时间。

Cache-Control:max-age=3600
在一小时内可以使用缓存。

3、Pragm

早期(HTTP1.0)中禁用网页缓存的字段。

协商缓存

服务器根据缓存标识tag来决定是否使用缓存的过程。
优先级在强缓存后,强缓存失效后浏览器才会携带缓存表示发起请求。

协商缓存生效返回304,失效返回200和请求结果。

这样的缓存tag有两种,各有优劣。

1、Last-Modified / If-Modified-Since

(1)、Last-Modified
最后修改时间。服务器响应请求时,在响应头中返回该资源文件在服务器最后被修改的时间。
(2)、If-Modified-Since
浏览器端再次发送请求时,携带的上一次请求返回的last-modified值,告诉服务器,上次请求返回的最后被修改时间。服务器通过对比Last-Modified``If-Modified-Since来判断是否可以继续使用缓存文件。

2、Etag / If-None-Match

(1)、Etag是服务器根据当前文件的内容,给文件生成唯一标识,只要里面的内容有改动,这个值就会变。
(2)、if-none-match是浏览器再次请求时,携带的上一次服务端给的Etag值。

服务器通过对比与服务器上的Etag确定是否更新:
不一样:返回新的资源,即进入http请求阶段。
否则返回304,告诉浏览器直接使用缓存。

3、区别:

(1)、精确度上,Etag大于Last-Modified。
etag是根据内容生成的标识,能准确感知到内容的变化。
而last-modified在有些情况中没法感知到内容的变化,主要有两点:
(a)、编辑了资源文件,但文件内容并没有更改,这样会造成缓存失效。
(b)、last-modified能感知的单位时间是秒,如果文件在1s内改变了多次,那么last-modified并没有体现出修改了。

(2)、性能上,Last-Modified优于Etag。
last-modified只记录时间点,而Etag需要根据文件的具体内容生成哈希值。

缓存位置

浏览器中的缓存位置一共有四种,优先级由高到低排序为:
Server Worker
Memory Cache
Disk Cache
Push Cache

Server Worker:

借鉴web workder的思路,在浏览器主线程外运行,是其背后的独立线程。
它脱离了浏览器的窗体,无法直接访问DOM,不过它可以实现很多功能,比如:离线缓存、消息推送、网络代理等。
其中离线缓存就是server worker cache。
Service Worker的缓存与浏览器别的缓存机制不同,它可以让我们自由控制缓存哪些文件、如何匹配缓存、如何读取缓存、并且缓存是持续性的。

Memory Cache:

内存中的缓存,效率上来讲它最快,从存活时间上来讲它最短,渲染进程结束后,内存缓存就不存在了,会随着进程的释放而释放。

Disk Cache:

存储在磁盘中的缓存,从存取效率上讲,比内存缓存慢,但他的存储容量更大,存储时间更长。

上面两个区别:

内存比较大的js、css会直接丢进磁盘,否则会放入内存。
内存使用率比较高的时候,文件优先进入磁盘。

push cache:

推送缓存。
他是HTTP/2中的内容

总结:

浏览器缓存机制简要的流程:
首先通过Cache-Control验证强缓存是否可用,
如果强缓存可用,则直接使用,
否则进入协商缓存,即发送HTTP请求,
服务器通过请求头中的If-Modified-Since或者If-None-Match字段检查资源是否更新

若资源更新,返回资源和200状态码;
否则,返回304,告诉浏览器直接从缓存获取资源

普遍分缓存方案:
HTML: 协商缓存;
css、js、图片:强缓存,文件名带上hash。

强缓存和协商缓存的区别:

强缓存不发送请求到服务器,所以会存在浏览器展示的页面不是最新的的情况,但是协商缓存发送请求到服务器,服务器能知道页面展示的是否为最新页面。
大部分web服务器都默认开启协商缓存。

刷新操作的影响:

强制刷新:直接从服务器加载,跳过强缓存和协商缓存。
普通刷新:跳过强缓存,但是会检查协商缓存
浏览器输入url:先执行强缓存。

别再纠结Jenkins了!中小团队用GitLab CI/CD搭建自动化流水线,这篇保姆级教程就够了 本文为中小团队提供GitLab CI/CD自动化流水线的保姆级教程,详细解析从零搭建到性能优化的全流程。相比Jenkins,GitLab CI/CD以零额外成本和五分钟快速上手的优势,成为资源受限团队的首选。通过实战案例和配置示例,帮助团队提升部署效率,降低运维成本。 阅读详情

相关推荐

BiliFocus浏览器插件:屏蔽B站分心元素,打造专注学习环境

你有没有过这样的经历:打开B站只是想查一个技术教程,结果首页推荐了一个“十分钟学会XX”的视频,点进去看了五分钟,侧边栏又冒出一个“程序员搞笑日常”,等回过神来,已经刷了一个小时,最初要查的问题早就忘得一干二净。这不是你的自制力问题,而是现代内容平台精心设计的“注意力陷阱”——它们的目标就是让你停留更久。 今天要介绍的 BiliFocus ,就是一款专门为B站(Bilibili)用户设计的浏览器插件,它的核心目标只有一个:帮你夺回对注意力的控制权,让你在B站上能真正“专注”地学习或工作。它不是一个简单的广告

weixin_30328063的博客 438

中高级前端工程师都需要熟悉的技能--前端缓存

web缓存主要指的是两部分:浏览器缓存和http缓存。其中http缓存是web缓存的核心,是最难懂的那一部分,也是最重要的那一部分。浏览器缓存:比如,localStorage,sessionStorage,cookie等等。这些功能主要用于缓存一些必要的数据,比如用户信息。比如需要携带到后端的参数。亦或者是一些列表数据等等。不过这里需要注意。像localStorage,sessionStorage这种用户缓存数据的功能,他只能保存5M左右的数据,多了不行。cookie则更少,大概只能有4kb的数据。...

web全栈开发的博客 1902

Hermes Studio浏览器标注优化:自托管部署与API集成实践

浏览器标注是一种将网页划线、批注和片段转化为结构化内容资产的技术,其核心在于选区精度、数据链路完整性和系统性能。自托管标注工具让用户拥有数据控制权,通过API可批量读写标注,实现与知识库、自动化流程的深度集成。应用场景覆盖资料收集、竞品分析、团队知识沉淀,尤其适合需要长期积累网页摘录的技术用户和内容研究团队。部署方式灵活,支持命令行、Docker和宝塔面板安装,其中宝塔面板可降低服务器维护门槛。合理配置Nginx反向代理与HTTPS可保障数据安全,接口调用和批量导出则进一步释放标注数据的工程价值。本文围绕H

weixin_30696427的博客 415

前端缓存详解以及相关性能优化策略

缓存机制随处可见,优秀的缓存机制可以缩短网页请求资源的事件,减少延迟,并且由于缓存文件可以重复利用还可以减少带宽,降低网络负荷,从而提高我们的性能优化。缓存就是数据交换的缓冲区(又称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,找到了则直接执行,找不到的话则从内存中查找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。

weixin_47948509的博客 5488

ArcGIS License Server点击启动没反应,许可管理器无法启动怎么办

4 当我们再打开ArcGIS License Server Administrator的时候。3 在【服务】中找到【ArcGIS License Manager】双击。无法启动ArcGIS License Server的情况。在使用ArcGIS的过程中,我们经常会遇到。专注GIS领域知识分享,交流行业软件技巧。欢迎关注,不定期分享GIS各种问题和技巧。1 右击我的电脑——【管理】服务状态——启动,确定即可。启动类型选择——自动。

GIS蒲公英的博客 2万+

2026年AI技能进阶指南:从提示词工程到智能体开发实战

提示词工程作为AI时代的基础沟通技能,其核心原理是通过系统化的交互方法论实现与大模型的高效对话。这项技术通过明确性、具体性和可操作性的设计原则,显著提升了AI生成内容的质量和实用性。在工程实践层面,提示词工程已经发展出角色扮演、步骤分解等成熟模式,广泛应用于代码生成、技术方案设计等场景。随着AI智能体开发的兴起,提示词工程进一步演化为定义智能体身份认知和行为规范的系统接口设计,成为构建自主AI系统的关键技术基础。掌握从基础提示词到智能体开发的完整技能栈,能够帮助开发者在AI技术浪潮中保持核心竞争力。

weixin_33139275的博客 333

前端性能优化(三)——浏览器九大缓存方法,如何快速学习前端开发

一个好的心态和一个坚持的心很重要,很多冲着高薪的人想学习前端,但是能学到最后的没有几个,遇到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。分享一些简单的前端面试题以及学习路线给大家,狂戳这里即可免费领取到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。分享一些简单的前端面试题以及学习路线给大家,狂戳这里即可免费领取。

2401_84093860的博客 1960

ROS——无人机ROS仿真包 rotors_simulator 编译教程

文章目录 安装wstool sudo apt install python3-wstool 创建ROS工程 $ mkdir -p ~/UAV/src $ cd ~/UAV/src $ catkin_init_workspace # initialize your catkin workspace $ wstool init 下载源码 git clone git@github.com:ethz-asl/rotors_simulator.git 源码链接: https://github.com/eth

漫长IT路 5863

前端需要了解的浏览器缓存知识

作为一个前端开发者,每天都在和浏览器打交道,对于浏览器缓存,相信都不会陌生,同时它也是我们日常开发中存在的一个非常重要的优化手段,无论在节省带宽、提高加载和渲染速度、减少网络阻塞,以及提高用户体验上,都有重要的作用。

铁锤妹妹的博客 2678

机器人抓取(一)—— ROS MoveIt! 程序控制真实UR5机器人运动(python)

接上篇:ubuntu18.04 ros-melodic 安装 ur_robot_driver,驱动真实的 ur5 机器人 上文在 ubuntu 系统中配置了ur 机器人ros功能包 universal_robot 和驱动 Universal_Robots_ROS_Driver,并实现了用 moveit_rviz 拖动机器人运动。本文旨在学习如何使用 moveit python 用户接口moveit_commander,实现真实的ur5 机器人轨迹规划与控制。 1. ur5 机器人控制 参考:MoveIt »

zxxRobot的博客 1万+

ESP32连接PDM麦克风操作指南:新手入门必看

手把手教你如何将ESP32与PDM麦克风连接,采集音频数据并用于音频分类应用。内容涵盖硬件接线、代码配置及实际调试技巧,适合初学者快速上手esp32在声音识别场景中的使用。

weixin_42590539的博客 1329

前端缓存 & 浏览器存储

前端缓存 一般用于缓存一些不常修改的常量数据或一些静态资源文件。大部分接口请求的数据都缓存在了服务端,方便统一管理缓存数据。前端做缓存的必要性:可以缓解服务端的压力,减少带宽的占用,同时也可以提升前端的查询性能。浏览器缓存和HTTP 缓存。

青蛙king的博客 4710

时序数据库避坑指南:TDengine与IoTDB在车联网场景的7个关键对比

本文对比了时序数据库TDengine与IoTDB在车联网场景下的7个关键差异,包括数据模型设计、边缘-云端协同能力、车规级函数库、存储压缩算法等。通过真实案例和性能测试,帮助企业在新能源汽车大数据处理中选择合适的时序数据库,优化存储成本和实时告警性能。

rust6ferris的博客 452

一个合格(优秀)的前端都应该阅读这些文章(coding)

.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rgba(51, 51, 51, 1) } .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .ma...

优快云_KONGlX的博客 628

基于CrossSim的存储硬件原型机ANN仿真:MNIST手写数字识别实现与分析

本项目基于CrossSim仿真平台,在存储硬件原型机上实现了MNIST手写数字识别的ANN模型。通过搭建CrossSim仿真环境,设计传统ANN基准模型和考虑硬件非理想特性的CrossSim模型,对比分析了不同配置下的识别性能。实验结果表明,在引入硬件噪声和器件变异的情况下,模型准确率仍能达到95%以上,验证了存储内计算架构的可行性。研究为存储硬件与计算单元融合提供了实验依据,展示了CrossSim在神经形态计算系统仿真中的实用价值。

huanghm88的专栏 595

基于FFT+BP神经网络/决策树的轴承故障诊断

基于FFT+BP神经网络/决策树的轴承故障诊断

天天酷科研的博客 131

一个合格(优秀)的前端都应该阅读这些文章

前言 原文地址:Nealyang/PersonalBlog 的确,有些标题党了。起因是微信群里,有哥们问我,你是怎么学习前端的呢?能不能共享一下学习方法。一句话也挺触动我的,我真的不算是什么大佬,对于学习前端知识,我也不能说是掌握了什么捷径。当然,我个人的学习方法这篇文章已经在写了,预计这周末会在我个人公众号发布。而在此之前,我想展(gong)示(xiang)一下,我平时浏览各个技术网站,所记...

全栈前端精选 584

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

一个优秀前端应该阅读这些文章

你是怎么学习前端的呢?能不能共享一下学习方法。一句话也挺触动我的,我真的不算是什么大佬,对于学习前端知识,我也不能说是掌握了什么捷径。当然,我个人的学习方法这篇文章已经在写了,预计这周末会在我个人公众号发布。而在此之前,我想展(gong)示(xiang)一下,我平时浏览各个技术网站,所记录下来的文章。如果你能做到每日消化一篇,或许,你只要一年,就能拿下各个大厂 offer!不由感慨,好文太多!吾等岂能浪费,还整日怨天尤人。

wofacailo的博客 122

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

每日软件测试1.0:用20分钟建立可持续的质量防线

软件测试是保障产品质量的关键环节,但传统测试往往集中在上线前,问题发现滞后、修复成本高昂。每日测试(Daily Testing)通过高频、小范围的验证,将问题发现时机提前到引入后第二天,其核心原理是“先跑通,再优化”,用最小闭环和风险四象限筛选测试范围。该方法强调手工执行建立基线,再逐步迈向自动化测试,避免过早自动化带来的维护负担。结合记录模板、失败排查链路与每周复盘机制,能够显著降低缺陷修复成本,提升团队协作效率,适用于迭代频繁、追求快速反馈的研发团队。这套轻量实践正是“每日软体测试1.0”的核心价值:不

congjukun0600的博客 401

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

一个优秀的前端都应该阅读这些文章

前言 的确,有些标题党了。起因是微信群里,有哥们问我,你是怎么学习前端的呢?能不能共享一下学习方法。一句话也挺触动我的,我真的不算是什么大佬,对于学习前端知识,我也不能说是掌握了什么捷径。当然,我个人的学习方法这篇文章已经在写了,预计这周末会在我个人公众号发布。而在此之前,我想展(gong)示(xiang)一下,我平时浏览各个技术网站,所记录下来的文章。如果你能做到每日消化一篇,或许,你只要一年,...

全栈前端精选 1085

从零到一:Turborepo如何重塑你的Monorepo开发体验

本文深入探讨了Turborepo如何通过其构建加速引擎彻底改变Monorepo开发体验。从大幅缩短构建时间到优化依赖管理,Turborepo凭借其高效的并行执行和智能缓存策略,为JavaScript和TypeScript项目带来革命性的效率提升。文章提供了从基础集成到企业级配置的完整指南,帮助开发者充分利用这一现代构建工具。

w7x8y9z的博客 388

Everyday-FE-Articles 8~11月前端文章日推 [持续更新]

Everyday-FE-Articles 由来自@阿里马跃的每日文章推荐,于是顺手整理,以便学习... -- By Ale-cc /* 注:序号不准确 */ 八月份 8月7日 星期二,农历六月廿六 Scriptswitch: Conditional Script Loading Manager for Browsers github.com/anywhichway… 三十分钟掌握Webp...

weixin_33932129的博客 1519
上一篇: 【每日十分钟前端】基础篇16,iframe解析及其优缺点、CSS性能优化、JS创建对象的方法
下一篇: 【每日十分钟前端】浏览器2,浏览器解析渲染页面流程,HTML解析、CSS解析、布局绘制等
黎明初时
博客等级 码龄13年 47粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值