当前位置: 首页 > 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;尽管它存在一定的误判率…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...