第25节课:前端缓存策略—提升网页性能与用户体验
目录
- 前端缓存的重要性
- HTTP缓存
- HTTP缓存的基本原理
- 常见的HTTP缓存头
- Cache-Control
- Expires
- ETag
- Last-Modified
- HTTP缓存的类型
- 强缓存
- 协商缓存
- 服务端渲染与SSR
- 服务端渲染(SSR)简介
- SSR的优势
- SSR的挑战
- 实践:使用SSR框架构建Web应用
- Next.js
- 安装Next.js
- 创建SSR页面
- 使用getServerSideProps
- Nuxt.js
- 安装Nuxt.js
- 创建SSR页面
- 结语
在现代Web开发中,前端缓存策略是提升网页性能和用户体验的关键技术之一。通过合理利用缓存,可以减少服务器的负担,加快网页加载速度,提高用户的满意度。本节课将详细介绍前端缓存策略中的HTTP缓存以及服务端渲染(SSR)的相关知识。
前端缓存的重要性
随着互联网的发展,用户对于网页加载速度的要求越来越高。根据Google的研究,53%的移动用户会放弃加载时间超过3秒的网页。因此,优化网页加载速度对于提升用户体验和保留用户至关重要。前端缓存策略是实现这一目标的重要手段之一。
HTTP缓存
HTTP缓存是前端缓存中最常见的形式之一。通过合理设置HTTP响应头,可以控制浏览器缓存资源的方式和时间,从而减少重复请求,加快网页加载速度。
HTTP缓存的基本原理
HTTP缓存通过在响应头中设置特定的字段来告诉浏览器如何缓存请求的资源。这些字段包括Cache-Control、Expires、ETag和Last-Modified等。浏览器根据这些字段的值来决定是否使用缓存的资源,或者向服务器请求新的资源。
常见的HTTP缓存头
Cache-Control
Cache-Control是HTTP/1.1协议中用于控制缓存行为的响应头。它可以设置资源的缓存策略,如max-age、public、private等。
- max-age:指定资源在缓存中可以保存的最大时间(以秒为单位)。
- public:指定资源可以被任何缓存(包括公共缓存和私有缓存)存储。
- private:指定资源只能被私有缓存(如浏览器缓存)存储。
示例:
http复制
Cache-Control: max-age=3600, public
Expires
Expires是HTTP/1.0协议中用于指定资源过期时间的响应头。它告诉浏览器在指定的时间之前可以使用缓存的资源。
示例:
http复制
Expires: Wed, 21 Oct 2025 07:28:00 GMT
ETag
ETag是HTTP响应头中用于标识资源版本的字段。当资源被修改时,ETag的值会改变,浏览器会根据这个值来判断是否需要重新请求资源。
示例:
http复制
ETag: "1234567890abcdef"
Last-Modified
Last-Modified是HTTP响应头中用于指定资源最后修改时间的字段。浏览器可以根据这个时间来判断资源是否需要更新。
示例:
http复制
Last-Modified: Wed, 21 Oct 2025 07:28:00 GMT
HTTP缓存的类型
强缓存
强缓存是指浏览器在缓存的资源未过期之前,直接使用缓存的资源,而不会向服务器发送请求。强缓存通常通过Cache-Control和Expires头来实现。
协商缓存
协商缓存是指浏览器在缓存的资源过期后,向服务器发送请求,服务器根据请求头中的If-Modified-Since或If-None-Match字段来判断资源是否被修改。如果资源未被修改,服务器会返回304 Not Modified响应,浏览器可以继续使用缓存的资源。
服务端渲染与SSR
服务端渲染(SSR)简介
服务端渲染(Server-Side Rendering,SSR)是指在服务器端生成网页的HTML内容,然后将生成的HTML发送给客户端。与传统的客户端渲染(Client-Side Rendering,CSR)相比,SSR可以显著提高网页的加载速度和SEO效果。
SSR的优势
- 提升首屏加载速度:SSR可以在服务器端生成完整的HTML页面,客户端收到后可以直接渲染,无需等待JavaScript加载和执行,从而显著提升首屏加载速度。
- 改善SEO效果:搜索引擎爬虫可以直接抓取SSR生成的HTML内容,无需等待JavaScript执行,从而改善网页的SEO效果。
- 减轻客户端负担:SSR将部分渲染工作转移到服务器端,减轻了客户端的负担,特别是在移动设备上,可以显著提升用户体验。
SSR的挑战
- 服务器压力增大:SSR需要在服务器端生成HTML内容,增加了服务器的负担,特别是在高并发情况下,可能会导致服务器性能瓶颈。
- 开发复杂度提高:SSR需要在服务器端和客户端同时进行开发,增加了开发的复杂度和维护成本。
- 实时性受限:SSR生成的HTML内容是静态的,对于需要实时更新的内容,可能需要额外的处理。
实践:使用SSR框架构建Web应用
Next.js
Next.js是一个流行的React框架,支持SSR和静态站点生成(SSG)。通过Next.js,开发者可以轻松地构建高性能的Web应用。
安装Next.js
bash复制
npx create-next-app my-app
cd my-app
npm run dev
创建SSR页面
在pages目录下创建一个SSR页面,例如about.js:
JavaScript复制
// pages/about.js
export default function About() {return <div>About Page</div>;
}
使用getServerSideProps
在页面中使用getServerSideProps函数来获取服务器端数据:
JavaScript复制
// pages/about.js
export async function getServerSideProps() {const res = await fetch('https://api.example.com/data');const data = await res.json();return { props: { data } };
}export default function About({ data }) {return <div>About Page: {data}</div>;
}
Nuxt.js
Nuxt.js是一个流行的Vue.js框架,支持SSR和静态站点生成(SSG)。通过Nuxt.js,开发者可以轻松地构建高性能的Web应用。
安装Nuxt.js
bash复制
npm install -g @nuxt/cli
nuxt init my-app
cd my-app
npm run dev
创建SSR页面
在pages目录下创建一个SSR页面,例如about.vue:
vue复制
<template><div>About Page</div>
</template><script>
export default {asyncData({ params, req }) {return { data: 'About Page Data' };}
};
</script>
结语
前端缓存策略是提升网页性能和用户体验的重要手段。通过合理利用HTTP缓存和服务端渲染(SSR),可以显著减少服务器的负担,加快网页加载速度,提高用户的满意度。在实际开发中,应根据具体需求选择合适的缓存策略和渲染方式,持续优化网页性能。继续深入学习和实践,你将能够不断提升你的前端开发技能,为用户提供更加优质的Web应用。
相关文章:
第25节课:前端缓存策略—提升网页性能与用户体验
目录 前端缓存的重要性HTTP缓存HTTP缓存的基本原理常见的HTTP缓存头Cache-ControlExpiresETagLast-Modified HTTP缓存的类型强缓存协商缓存 服务端渲染与SSR服务端渲染(SSR)简介SSR的优势SSR的挑战实践:使用SSR框架构建Web应用Next.js安装Nex…...
完美世界C++游戏开发面试题及参考答案
堆栈数据结构有什么区别,举例说明 栈(Stack)和堆(Heap)是两种不同的数据结构,它们在多个方面存在显著区别: 存储方式 栈:栈是一种后进先出(LIFO)的数据结构,它的存储空间是连续的。栈由系统自动分配和释放,用于存储函数调用时的局部变量、函数参数、返回地址等信息…...
LabVIEW无人机航线控制系统
介绍了一种无人机航线控制系统,该系统利用LabVIEW软件与MPU6050九轴传感器相结合,实现无人机飞行高度、速度、俯仰角和滚动角的实时监控。系统通过虚拟仪器技术,有效实现了数据的采集、处理及回放,极大提高了无人机航线的控制精度…...
AtCoder Beginner Contest 391(ABCDE)
A - Lucky Direction 翻译: 给你一个字符串 D,代表八个方向(北、东、西、南、东北、西北、东南、西南)之一。方向与其代表字符串之间的对应关系如下。 北: N东: E西: W南: S东…...
MINIRAG: TOWARDS EXTREMELY SIMPLE RETRIEVAL-AUGMENTED GENERATION论文翻译
感谢阅读 注意不含评估以后的翻译原论文地址标题以及摘要介绍部分MiniRAG 框架2.1 HETEROGENEOUS GRAPH INDEXING WITH SMALL LANGUAGE MODELS2.2 LIGHTWEIGHT GRAPH-BASED KNOWLEDGE RETRIEVAL2.2.1 QUERY SEMANTIC MAPPING2.2.2 TOPOLOGY-ENHANCED GRAPH RETRIEVAL 注意不含评…...
HTB:LinkVortex[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用gobuster对靶机进行路径FUZZ 使用ffuf堆靶机…...
3D图形学与可视化大屏:什么是材质属性,有什么作用?
一、颜色属性 漫反射颜色 漫反射颜色决定了物体表面对入射光进行漫反射后的颜色。当光线照射到物体表面时,一部分光被均匀地向各个方向散射,形成漫反射。漫反射颜色的选择会直接影响物体在光照下的外观。例如,一个红色的漫反射颜色会使物体在…...
什么是门控循环单元?
一、概念 门控循环单元(Gated Recurrent Unit,GRU)是一种改进的循环神经网络(RNN),由Cho等人在2014年提出。GRU是LSTM的简化版本,通过减少门的数量和简化结构,保留了LSTM的长时间依赖…...
基于微信小程序的酒店管理系统设计与实现(源码+数据库+文档)
酒店管理小程序目录 目录 基于微信小程序的酒店管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 (1) 用户信息管理 (2) 酒店管理员管理 (3) 房间信息管理 2、小程序序会员模块的实现 (1)系统首页 ÿ…...
Python-基于PyQt5,pdf2docx,pathlib的PDF转Word工具
前言:日常生活中,我们常常会跟WPS Office打交道。作表格,写报告,写PPT......可以说,我们的生活已经离不开WPS Office了。与此同时,我们在这个过程中也会遇到各种各样的技术阻碍,例如部分软件的PDF转Word需要收取额外费用等。那么,可不可以自己开发一个小工具来实现PDF转…...
Java-数据结构-优先级队列(堆)
一、优先级队列 ① 什么是优先级队列? 在此之前,我们已经学习过了"队列"的相关知识,我们知道"队列"是一种"先进先出"的数据结构,我们还学习过"栈",是"后进先出"的…...
爬虫基础(四)线程 和 进程 及相关知识点
目录 一、线程和进程 (1)进程 (2)线程 (3)区别 二、串行、并发、并行 (1)串行 (2)并行 (3)并发 三、爬虫中的线程和进程 &am…...
C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】
1. 题目描述 力扣在线OJ题目 给定两个数组,编写一个函数来计算它们的交集。 示例: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 输入:nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:[9,4] 2. 思路 直接暴力…...
Tailwind CSS - Tailwind CSS 引入(安装、初始化、配置、引入、构建、使用 Tailwind CSS)
一、Tailwind CSS 概述 Tailwind CSS 是一个功能优先的 CSS 框架,它提供了大量的实用类(utility classes),允许开发者通过组合这些类来快速构建用户界面 Tailwind CSS 与传统的 CSS 框架不同(例如,Bootstr…...
Sqoop导入MySQL中含有回车换行符的数据
个人博客地址:Sqoop导入MySQL中含有回车换行符的数据 MySQL中的数据如下图: 检查HDFS上的目标文件内容可以看出,回车换行符位置的数据被截断了,导致数据列错位。 Sqoop提供了配置参数,在导入时丢弃掉数据的分隔符&…...
LightM-UNet(2024 CVPR)
论文标题LightM-UNet: Mamba Assists in Lightweight UNet for Medical Image Segmentation论文作者Weibin Liao, Yinghao Zhu, Xinyuan Wang, Chengwei Pan, Yasha Wang and Liantao Ma发表日期2024年01月01日GB引用> Weibin Liao, Yinghao Zhu, Xinyuan Wang, et al. Ligh…...
stm32硬件实现与w25qxx通信
使用的型号为stm32f103c8t6与w25q64。 STM32CubeMX配置与引脚衔接 根据stm32f103c8t6引脚手册,采用B12-B15四个引脚与W25Q64连接,实现SPI通信。 W25Q64SCK(CLK)PB13MOSI(DI)PB15MISO(DO)PB14CS(…...
FPGA 使用 CLOCK_DEDICATED_ROUTE 约束
使用 CLOCK_DEDICATED_ROUTE 约束 CLOCK_DEDICATED_ROUTE 约束通常在从一个时钟区域中的时钟缓存驱动到另一个时钟区域中的 MMCM 或 PLL 时使 用。默认情况下, CLOCK_DEDICATED_ROUTE 约束设置为 TRUE ,并且缓存 /MMCM 或 PLL 对必须布局在相同…...
一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI
一、GenBI AI 代理介绍(文末提供下载) github地址:https://github.com/Canner/WrenAI 本文信息图片均来源于github作者主页 在 Wren AI,我们的使命是通过生成式商业智能 (GenBI) 使组织能够无缝访问数据&…...
C动态库的生成与在Python和QT中的调用方法
目录 一、动态库生成 1)C语言生成动态库 2)c类生成动态库 二、动态库调用 1)Python调用DLL 2)QT调用DLL 三、存在的一些问题 1)python调用封装了类的DLL可能调用不成功 2)DLL格式不匹配的问题 四、…...
C++ Primer 自定义数据结构
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
解析 Oracle 中的 ALL_SYNONYMS 和 ALL_VIEWS 视图:查找同义词与视图的基础操作
目录 前言1. ALL_SYNONYMS 视图2. ALL_VIEWS 视图3. 扩展 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. ALL_SYNONYMS 视图 在 Oracle 数据库中,同义词(Synonym)是对数…...
PyTorch框架——基于深度学习YOLOv8神经网络学生课堂行为检测识别系统
基于YOLOv8深度学习的学生课堂行为检测识别系统,其能识别三种学生课堂行为:names: [举手, 读书, 写字] 具体图片见如下: 第一步:YOLOv8介绍 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本…...
深入探索 Vue 3 Markdown 编辑器:高级功能与实现
目录 1. 为什么选择 Markdown 编辑器?2. 选择合适的 Markdown 编辑器3. 安装与基本配置安装 配置 Markdown 编辑器代码说明 4. 高级功能实现4.1 实时预览与双向绑定4.2 插入图片和图像上传安装图像上传插件配置图像上传插件 4.3 数学公式支持安装 KaTeX配置 KaTeX 插…...
7.攻防世界fileclude
题目描述 进入题目页面如下 看到题目提示应该为文件包含漏洞 解释上述代码 // 输出提示信息:错误的方式! WRONG WAY! <?php // 包含名为 "flag.php" 的文件,通常这个文件里可能包含重要的敏感信息,如 flag inclu…...
【自然语言处理(NLP)】深度学习架构:Transformer 原理及代码实现
文章目录 介绍Transformer核心组件架构图编码器(Encoder)解码器(Decoder) 优点应用代码实现导包基于位置的前馈网络残差连接后进行层规范化编码器 Block编码器解码器 Block解码器训练预测 个人主页:道友老李 欢迎加入社…...
【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
目录 1 -> HML语法 1.1 -> 页面结构 1.2 -> 数据绑定 1.3 -> 普通事件绑定 1.4 -> 冒泡事件绑定5 1.5 -> 捕获事件绑定5 1.6 -> 列表渲染 1.7 -> 条件渲染 1.8 -> 逻辑控制块 1.9 -> 模板引用 2 -> CSS语法 2.1 -> 尺寸单位 …...
当WebGIS遇到智慧文旅-以长沙市不绕路旅游攻略为例
目录 前言 一、旅游数据组织 1、旅游景点信息 2、路线时间推荐 二、WebGIS可视化实现 1、态势标绘实现 2、相关位置展示 三、成果展示 1、第一天旅游路线 2、第二天旅游路线 3、第三天旅游路线 4、交通、订票、住宿指南 四、总结 前言 随着信息技术的飞速发展&…...
《大数据时代“快刀”:Flink实时数据处理框架优势全解析》
在数字化浪潮中,数据呈爆发式增长,实时数据处理的重要性愈发凸显。从金融交易的实时风险监控,到电商平台的用户行为分析,各行业都急需能快速处理海量数据的工具。Flink作为一款开源的分布式流处理框架,在这一领域崭露头…...
【机器学习理论】朴素贝叶斯网络
基础知识: 先验概率:对某个事件发生的概率的估计。可以是基于历史数据的估计,可以由专家知识得出等等。一般是单独事件概率。 后验概率:指某件事已经发生,计算事情发生是由某个因素引起的概率。一般是一个条件概率。 …...
