当前位置: 首页 > news >正文

什么是静态加载-前端

什么是前端静态加载

在前端开发中,静态加载是一种常见且重要的技术。简单来说,前端静态加载指的是在页面加载时将所需的资源(如HTML、CSS、JavaScript、图片等)一并加载到用户的浏览器中。这种方式有助于提高页面的加载速度和用户体验,因为它减少了服务器请求的次数和页面渲染的等待时间。本文将深入探讨前端静态加载的多种类型及其底层设计,并通过代码案例让读者更好地理解这一技术。

在这里插入图片描述

文章目录

      • 什么是前端静态加载<p><p><p><p><p><p>
    • 前端静态加载分多少种?
      • 1. **HTML静态加载**
      • 2. **CSS静态加载**
      • 3. **JavaScript静态加载**
      • 4. **图片和媒体静态加载**
      • 5. **静态网站生成器**
      • 6. **前端框架的静态化**
      • 7. **服务端渲染(SSR)后的静态化**
      • 9. **资源打包与静态化**
      • 10. **静态资源CDN加载**
    • 底层设计解析?
      • 1. **缓存机制**
      • 2. **文件指纹**
      • 3. **代码分割**
      • 4. **预加载与懒加载**
      • 5. **HTTP/2与多路复用**
      • 6. **PWA与离线缓存**
      • 7. **静态资源优化**
      • 9. **浏览器缓存策略**
      • 10. **实时更新与版本控制**

前端静态加载分多少种?

1. HTML静态加载

HTML静态加载是最基础的一种形式,指的是HTML文件在服务器上是预先生成好的,浏览器直接请求并加载这些文件。这种方式特别适合内容不经常变化的网站,如博客或个人主页。

代码案例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Static HTML Example</title>
</head>
<body><h1>Welcome to My Static Website</h1><p>This is an example of static HTML content.</p>
</body>
</html>

2. CSS静态加载

CSS文件也可以静态加载,通过<link>标签将CSS文件引入到HTML中。这种方式使得样式在页面加载时就已经确定,减少了页面闪烁或样式变动的可能。

代码案例

<head><link rel="stylesheet" href="styles.css">
</head>

3. JavaScript静态加载

JavaScript文件可以通过<script>标签静态加载。这种方式适合那些在页面加载时就需要执行的脚本,如初始化页面元素或绑定事件。

代码案例

<body><script src="script.js"></script>
</body>

4. 图片和媒体静态加载

图片、视频等媒体资源也可以通过静态路径加载。这种方式确保了媒体资源在页面加载时就已经存在,减少了用户等待的时间。

代码案例

<img src="image.jpg" alt="Static Image">

5. 静态网站生成器

静态网站生成器如Jekyll、Hugo等,将动态内容(如Markdown文件)转换为静态HTML文件。这种方式结合了动态内容的便利性和静态文件的高效性。

6. 前端框架的静态化

一些前端框架(如React、Vue)支持将应用预渲染为静态HTML文件,以便在服务器直接提供这些文件,提高加载速度。

代码案例(React)

import React from 'react';
import ReactDOMServer from 'react-dom/server';const App = () => (<div><h1>Hello, Static World!</h1></div>
);const html = ReactDOMServer.renderToString(<App />);
console.log(html); // 输出静态HTML

7. 服务端渲染(SSR)后的静态化

服务端渲染的页面可以在初次请求时生成静态HTML,并在之后的请求中直接提供这些静态文件,这种方式结合了SSR的优势和静态加载的高效性。

9. 资源打包与静态化

工具如Webpack、Rollup可以将多个资源打包成一个或多个静态文件,减少请求次数,提高加载速度。

代码案例(Webpack)

// webpack.config.js
const path = require('path');module.exports = {entry: './src/index.js',output: {filename: 'bundle.js',path: path.resolve(__dirname, 'dist')}
};

10. 静态资源CDN加载

将静态资源托管在CDN上,利用CDN的全球节点加速资源加载,是提升用户体验的有效方式。

底层设计解析?

1. 缓存机制

静态资源可以被浏览器缓存,这意味着在用户第二次访问时,资源可以直接从缓存中加载,而不需要再次请求服务器。

代码案例
通过设置HTTP头来控制缓存:

Cache-Control: public, max-age=31536000

2. 文件指纹

在文件名中加入哈希值(指纹),确保文件内容变化时,文件名也随之变化,从而强制浏览器重新加载新资源。

代码案例

<script src="script.abc123.js"></script>

3. 代码分割

通过代码分割,将不同功能的代码拆分成多个文件,只在需要时加载,减少初始加载时间。

代码案例(Webpack)

// 动态导入模块
import('./module').then(module => {module.doSomething();
});

4. 预加载与懒加载

预加载(preload)和懒加载(lazy load)是优化静态资源加载的两种策略。预加载提前加载资源,懒加载则在需要时才加载资源。

代码案例(预加载)

<link rel="preload" href="style.css" as="style">

代码案例(懒加载图片)

<img src="placeholder.jpg" data-src="real-image.jpg" alt="Lazy Load Image">
<script>// 懒加载逻辑
</script>

5. HTTP/2与多路复用

HTTP/2的多路复用特性允许浏览器同时发送多个请求,显著提高了静态资源加载的效率。

6. PWA与离线缓存

渐进式Web应用(PWA)利用Service Worker和离线缓存,让应用即使在离线状态下也能正常工作。

代码案例(注册Service Worker)

if ('serviceWorker' in navigator) {navigator.serviceWorker.register('/service-worker.js');
}

7. 静态资源优化

包括压缩、合并、图片格式选择等,都是优化静态资源加载的重要手段。

代码案例(Gzip压缩)
在服务器配置中启用Gzip压缩:

gzip on;
gzip_types text/plain application/javascript application/css;

9. 浏览器缓存策略

了解并合理利用浏览器的缓存策略(如强缓存、协商缓存)可以显著提高静态资源的加载效率。

10. 实时更新与版本控制

通过版本控制确保静态资源的更新能够被及时感知,同时避免缓存过期带来的问题。

看到这里的小伙伴,欢迎点赞、评论,收藏!

相关文章:

什么是静态加载-前端

什么是前端静态加载 在前端开发中&#xff0c;静态加载是一种常见且重要的技术。简单来说&#xff0c;前端静态加载指的是在页面加载时将所需的资源&#xff08;如HTML、CSS、JavaScript、图片等&#xff09;一并加载到用户的浏览器中。这种方式有助于提高页面的加载速度和用户…...

(01)python-opencv基础知识入门(图片的读取与视频打开)

前言 一、图像入门 1.1 读取图像cv.imread() 1.2 数组数据转换cv.cvtColor() 1.3数据窗口展示 1.4图像保存 1.5图像的截取 1.6 图像的比例缩放 二、视频入门 参考文献 前言 OpenCV 于 1999 年由 Gary Bradsky 在英特尔创立&#xff0c;第一个版本于 2000 年问世。Vad…...

quic-go实现屏幕广播程序

最近在折腾quic-go, 突然想起屏广适合用udp实现&#xff0c;而http3基于quic-go&#xff0c;后者又基于udp, 所以玩一下。 先贴出本机运行效果图&#xff1a; 功能(实现)说明&#xff1a; 1.服务器先启动作为共享屏幕方&#xff0c;等待客户端连接上来 2.客户端连接 3.客户…...

C#操作SqlServer数据库语句

操作数据库语句 操作数据库语句需要搭配数据库的连接Connection类 和下达SQL命令Command类 1. ExecuteNonQuery ExecuteNonQuery 方法主要用来更新数据。通常使用它来执行Update、Insert和Delete语句&#xff0c;最后执行sql语句的时候可以用一个整形变量来接收&#xff0c;返…...

Linux之实战命令33:mount应用实例(六十七)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…...

论文精读:基于概率教师学习的跨域自适应目标检测(ICML2022)

原文标题&#xff1a;Learning Domain Adaptive Object Detection with Probabilistic Teacher 中文标题&#xff1a;基于概率教师学习的域自适应目标检测 代码地址&#xff1a; GitHub - hikvision-research/ProbabilisticTeacher: An official implementation of ICML 2022 p…...

thinkphp 学习记录

1、PHP配置 &#xff08;点开链接后&#xff0c;往下拉&#xff0c;找到PHP8.2.2版本&#xff0c;下载的是ZIP格式&#xff0c;解压即用&#xff09; PHP For Windows: Binaries and sources Releases &#xff08;这里是下载地址&#xff09; 我解压的地址是&#xff1a;D:\…...

Leetcode 24 Swap Nodes in Pairs

题意&#xff1a;给定一个list of nodes&#xff0c;要求交换相邻的两个节点 https://leetcode.com/problems/swap-nodes-in-pairs/description/ Input: head [1,2,3,4] Output: [2,1,4,3] 首先你需要思考&#xff0c;我要交换两个节点&#xff0c;对于每个节点&#xff0c;向…...

选择 PDF 编辑器时要考虑什么?如何选择适用于 Windows 10 的 PDF 编辑器

选择 PDF 编辑器时要考虑什么&#xff1f; 随着技术的出现&#xff0c;您在网上浏览时肯定会遇到一些 PDF 软件。但是&#xff0c;选择PDF 编辑器时需要考虑什么&#xff1f;如果您是重度用户并将在您的工作场所使用它&#xff0c;建议您找到专业、使用方便且能够帮助您完成任…...

33-Golang开发入门精讲

├──33-Golang开发入门精讲 | └──1-Golang语法精讲 | | ├──1-介绍-go语言 | | ├──2-介绍-go语言中的面向对象 | | ├──3-第1阶段&#xff1a;走进Golang | | ├──4-第1阶段&#xff1a;走进Golang | | ├──5-第2阶段&#xff1a;变量与…...

研发中台拆分之路:深度剖析、心得总结与经验分享

背景在 21 年&#xff0c;中台拆分在 21 年&#xff0c;以下为中台拆分的过程心得&#xff0c;带有一定的主观&#xff0c;偏向于中小团队中台建设参考&#xff08;这里的中小团队指 3-100 人的团队&#xff09;&#xff0c;对于大型团队不太适用&#xff0c;毕竟大型团队人中 …...

SWIFT Payment

SWIFT stands for Society for Worldwide Interbank Financial Telecommunication SWIFT——环球银行金融电信协会 SWIFT Payment Useful Link ISO 20022https://www.iso20022.org/https://www.swift.com/standards/iso-20022MT and MX Equivalence Tableshttps://www2.swift…...

数据结构之红黑树实现(全)

一、红黑树 红黑树是一种自平衡的二叉搜索树&#xff0c;它通过约束节点的颜色和结构来保持平衡。红黑树是由 Rudolf Bayer 在1972年发明的&#xff0c;被认为是一种优秀的平衡树结构&#xff0c;广泛应用于各种数据结构和算法中。 1.红黑树的性质 1. 每个结点是红的或者黑的…...

冷热数据分离

优质博文&#xff1a;IT-BLOG-CN 一、背景 随着机票业务的快速发展&#xff0c;订单量持续增长对业务性能带来影响&#xff0c;需要进行冷热数据分离。目前机票订单模块主要使用Mysql(InnoDB)作为数据库存储&#xff0c;历史订单信息状态修改频率低并占用大量数据库存储空间&…...

朝花夕拾:多模态图文预训练的前世今生

Diffusion Models专栏文章汇总&#xff1a;入门与实战 前言&#xff1a;时间来到2024年&#xff0c;多模态大模型炙手可热。在上一个时代的【多模态图文预训练】宛若时代的遗珠&#xff0c;本文的时间线从2019年到2022年&#xff0c;从BERT横空出世讲到ViT大杀四方&#xff0c;…...

亳州自闭症寄宿制学校,关注孩子的学习和生活

在特殊教育领域&#xff0c;自闭症儿童的教育与成长一直是社会各界关注的焦点。近年来&#xff0c;随着对自闭症认识的加深&#xff0c;越来越多的寄宿制学校应运而生&#xff0c;致力于为这些特殊的孩子提供全面、个性化的教育服务。在安徽亳州&#xff0c;这样的学校正努力为…...

Root me CTF all the day靶场ssrf+redis漏洞

Rootme CTF all the day靶场ssrfredis漏洞 一、环境介绍1、漏洞地址2、漏洞介绍 二、 搭建环境三、测试过程3.1 读取系统文件3.2 探测开放的服务器端口(dict协议)3.3 redis未授权访问3.3.1 利用redis来写ssh密钥&#xff08;gopher协议写入&#xff09;3.3.2 利用redis写定时任…...

C#中Json序列化的进阶用法

本文所有json序列化&#xff0c;都使用的Newtonsoft.Json包 1 JsonIgnore 在 Newtonsoft.Json 中&#xff0c;如果你不想将某些属性转换为 JSON 字符串&#xff0c;可以使用多种方法来实现。以下是几种常见的方法&#xff1a; 1.1 使用 [JsonIgnore] 特性 [JsonIgnore] 特性…...

IO相关的常用工具包

常用工具包Commons-io Commons-io是apache开源基金组织提供的一组有关IO操作的开源工具包。 作用:提高IO流的开发效率。 使用步骤: 1、在项目中创建一个文件夹&#xff1a;lib 2、将jar包复制粘贴到lib文件夹 3、右键点击jar包&#xff0c;选择Add as Library--->点击OK …...

Spring Boot集成RBloomFilter快速入门Demo

在大数据处理和缓存优化的场景中&#xff0c;布隆过滤器&#xff08;Bloom Filter&#xff09;因其高效的空间利用和快速的查询性能而被广泛应用。RBloomFilter是布隆过滤器的一种实现&#xff0c;通常用于判断一个元素是否存在于一个集合中&#xff0c;尽管它存在一定的误判率…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...