首页 > 其他分享 >Web前端技术基础

Web前端技术基础

时间:2025-01-21 13:28:59浏览次数:3  
标签:Web 缓存 浏览器 请求 前端 基础 Modified Last 资源

浏览器基本应用

浏览器组成结构

输入url发送了什么?

  • url解析:判断url是否符合规范
  • 浏览器判断缓存:判断请求的资源是否有缓存,如果有就不需要向服务器发送新请求
  • DNS解析,获取目标服务器ip
  • 建立TCP连接(三次握手)
  • 发送http请求
  • 服务器处理,返回数据
  • 浏览器解析渲染页面
  • TCP连接关闭(四次挥手)

浏览器的渲染过程

  • 解析文档,生成DOM树
  • 解析CSS,根据CSS规则生成CSSOM树
  • 在CSSOM和DOM树生产完后,合并DOM,CSSOM树构建渲染树
  • 渲染树完成后,开始计算元素大小位置(回流发送在这个阶段)
  • 根据计算好的位置信息将内容渲染到屏幕上(重绘发送在这个阶段)

浏览器数据持久化存储技术

强缓存与协商缓存的区别

  强缓存

使用强缓存策略时,如果缓存资源有效,浏览器会从本地读取缓存资源并返回200,不必再向服务器发起请求。强缓存策略可以通过两种方式来设置,分别是 http 头信息中的 Expires 属性和 Cache-Control 属性。

Expires指定资源的过期时间。在过期时间以内,改资源可以被缓存使用,不需要向浏览器发送请求。这个时间依赖于服务器时间,会存在服务器时间和客户端时间不一致。

Cache-Control属性:

  • private: 仅浏览器可以缓存
  • public:浏览器和代理服务器都可以缓存
  • max-age=xxx 过期时间,单位为秒
  • no-cache 不进行强缓存,但会有协商缓存
  • no-store 不强缓存,也不协商缓存

当两种方式一起使用时,Cache-Control 的优先级要高于 Expires

协商缓存

如果设置强缓存,无需发起请求,直接使用缓存内容。如果没有命中强缓存,设置了协商缓存,也不需要发起请求,使用缓存。

命中协商缓存条件:

  • Cache-Control: no-cache
  • max-age时间过期

在使用协商缓存时,会先向服务器发送一个请求,如果资源没有发生修改,则请求返回304状态,让浏览器使用本地缓存。如果资源发生修改,则返回修改后的内容

request headers中的Etag属性和Last-Modified属性,来进行设置。其中,ETage优先于Last-Modified

Etag文件改动 服务器在返回资源的时候,在头信息中添加Etag属性,这个属性是资源的唯一标识符。当资源改变,这个值也会改变。下次请求资源时,会在请求头中添加If-None-Match属性,为上一次请求的资源的Etag值。服务端会通过这个属性和资源最后一次修改时间进行对比,以此来判断资源是否修改。这种方式比Last-Modified更加准确。

Last-Modified 上次修改时间 服务器通过在响应头上添加Last-Modified属性,来指出资源最后一次修改时间。当浏览器发起请求时,会在请求头上添加一个IF-Modified-Since属性,值为上一次资源请求的Last-Modified的值。服务区会通过这个属性和最后修改时间来进行比较,以此来判断资源是否修改。如果没有资源修改,返回304状态,使用本地缓存。如果资源修改,就返回最新资源,200状态。

这种方式有个缺点,Last-Modified标记的时间只能精确到1秒,如果文件在1秒内修改,但是 Last-Modified 却没有改变,这样会造成缓存命中的不准确。

区别

  • 强缓存优先级高于协商缓存
  • 协商缓存不论命中与否都会发送一次请求
  • 强缓存返回200,协商缓存命中返回304
  • Ctrl+F5 会强制刷新会跳过所有缓存,而F5刷新跳过强缓存,但是会检查协商缓存。
Cookie、LocalStorage、SessionStorage区别

WebSQL

WebSQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs

如果你之前接触过诸如像 MySQL 这样的关系型数据库,学习过 SQL 语言,那么 WebSQL 对于你来讲没有任何的难度。

最新版的 Safari, Chrome 和 Opera 浏览器都支持 WebSQL

  • 三个核心方法
    1. openDatabase:使用数据库或新建数据库来创建数据库对象
    2. transaction:允许我们根据情况控制事务提交或回滚
    3. executeSql:这个方法用于执行真实的 SQL 查询
indexDB

   IndexDB 是一个运行在浏览器上的非关系型数据库。既然是数据库了,那就不是 5M、10M 这样小打小闹级别了。理论上来说,IndexDB 理论上是没有存储上限的一般来说不会小于 250M)。它不仅可以存储字符串,还可以存储二进制数据。

Application Cache

WebSQL Application Cache 是 HTML5 中定义的一种离线存储技术标准。这种技术可以让开发者明确地指定页面中哪些静态资源可以在第一次访问网页的同时缓存到本地,并且在下次访问该网页时向服务器询问本地缓存的资源是否需要更新。

cacheStorage

  

为了能够精细地、可编程地控制缓存,被设计出来。有了它,就可以用 JS 对缓存进行增删改查,你也可以在 Chrome 的 DevTools 里面直观地查看。对于传统的 Header 缓存,你是没法知道有哪些缓存,更加没法对缓存进行操作的。你只能被动地修改 URL 让浏览器抛弃旧的缓存,使用新的资源。


 

前端高效开发技术

前端高效开发工具

VScode

Node调试工具

node-inspector

前端远程调试 工具

就是我们日常按F12那个

标签:Web,缓存,浏览器,请求,前端,基础,Modified,Last,资源
From: https://blog.csdn.net/Emnational/article/details/145281599

相关文章

  • XML外部实体注入--XML基础
    一.XML基础1.XML基础概念定义:XML即可扩展标记语言(ExtensibleMarkupLanguage),用于标记电子文件,使其具有结构性。它是一种允许用户对自己的标记语言进行定义的源语言,可用来标记数据、定义数据类型。设计宗旨与应用:XML的设计宗旨是传输数据,而非显示数据。在web中应......
  • 数据库基础知识:理论、E-R图、事务、原则
    (5)数据库理论与E-R图数据库理论(DatabaseTheory)是在创建数据库的过程涉及创建现实世界的抽象模型;将现实世界的概念作为实体表示在数据库中。E-R图(EntityRelationshipDiagramming)用于表示数据模型的图形工具/关系的抽象,主要用于数据库设计阶段,通过实体(Entity)、属性(Attribut......
  • 【LeetCode 刷题】栈与队列-基础操作
    此博客为《代码随想录》字符串章节的学习笔记,主要内容为栈与队列基础操作相关的题目解析。文章目录232.用栈实现队列225.用队列实现栈232.用栈实现队列题目链接classMyQueue:def__init__(self):self.in_s,self.out_s=[],[]......
  • 【2025年】全国CTF夺旗赛-从零基础入门到竞赛,看这一篇就稳了!
    目录一、CTF简介二、CTF竞赛模式三、CTF各大题型简介四、CTF学习路线4.1、初期1、html+css+js(2-3天)2、apache+php(4-5天)3、mysql(2-3天)4、python(2-3天)5、burpsuite(1-2天)4.2、中期1、SQL注入(7-8天)2、文件上传(7-8天)3、其他漏洞(14-15天)4.3、后期五、CTF学......
  • 记一次用黑客技术后门爆破到提权实战案例,网络安全零基础入门到精通实战教程!
    前言这次的目标是一个英国小网站,目的是拿下这个站点指定文件的修改权限。习惯性的在渗透某个目标之前先对目标进行基本的信息搜集,这样在后面的渗透过程中可以省下不少时间,此次的渗透可以说80%的运气,20%的经验才顺利拿到目标权限。基本信息探测:目标站点:http://www.wem***......
  • 网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程
    前言1.入行网络安全这是一条坚持的道路,三分钟的热情可以放弃往下看了。2.多练多想,不要离开了教程什么都不会了,最好看完教程自己独立完成技术方面的开发。3.有时多百度,我们往往都遇不到好心的大神,谁会无聊天天给你做解答。4.遇到实在搞不懂的,可以先放放,以后再来解决。→【......
  • 关于Web开发中vue的介绍以及发送异步请求的学习
    昨天,我再一次打开了黑马程序员中的Web开发教程,对于之前学习遗漏的进行了补充,了解了Vue其实是一个简化之后的JavaScript框架,主要利用了MVVM模型,在使用时需要引用Vue.js文件newVue({el:'#app',data:{message:'HelloVue!'}});在以上简单代码中,如果message中的数据发生变......
  • DevExpress ASP.NET Web Forms v24.2 最新版本系统环境配置要求
    本文档包含有关安装和使用 DevExpressASP.NETWebForms控件的系统要求的信息。点击获取DevExpressv24.2正式版.NETFrameworkDevExpressASP.NETWebForms控件支持以下.NET框架版本。如果您需要DevExpress产品的早期版本,请咨询“在线客服”获取。IDEDevExpressASP.......
  • 05JavaWeb——SpringBootWeb请求响应
    前言在上一次的课程中,我们开发了springbootweb的入门程序。基于SpringBoot的方式开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串“HelloWorld~”。其实呢,是我们在浏览器发起请求,请求了我们的后端web服务器(也就是内置的Tomcat)。而我们在开发web程序时呢,......
  • 某Websocket反爬逆向分析+请求加解密+还原html
    网址aHR0cHM6Ly93d3cueWR4Zi5nb3YuY24vTmV3cy9zaG93TGlzdC80L3BhZ2VfMS5odG1s前言工作中遇到的某websocket反爬,比混淆网站还恶心,看到也有其他人在问这个之前看到其他大佬也弄过这个websocket反爬,但是只是说了下加解密,个人觉得最重要的还是还原最终的html,所以来分享一下过程......