如何在 Ubuntu 22.04 上优化 Apache 以应对高流量网站教程
简介
在本教程中,我们将学习如何优化 Apache 以应对高流量网站。
当运行高流量网站时,确保你的 Apache Web 服务器得到优化对于有效处理负载至关重要。在本指南中,我们将介绍配置 Apache 以提高性能和可扩展性的基本技巧。
为高流量网站优化 Apache 至关重要,原因如下:
提高性能:适当的优化可确保更快的响应时间和更流畅地处理大量请求,防止速度减慢或出现瓶颈。
资源效率:优化的配置允许 Apache 更有效地利用系统资源(如 CPU 和内存),从而减少服务器在负载较重时的压力。
增强用户体验:更快的页面加载时间和最少的停机时间可以带来更好的用户体验,从而提高参与度和保留率。
更高的可用性:针对高流量进行优化可以最大限度地减少服务器崩溃或中断的风险,确保你的网站即使在高峰期也能保持可用。
准备工作
服务器准备
必要前提:
- 一个充满求知欲的大脑。
- 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://rainyun.ivwv.site
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
- 点击 云产品 → 云服务器 → 立即购买。
- 选择距离你较近的区域,以保证低延迟。
- 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
- 我们使用
PowerShell
进行SSH
远程连接到服务器,Win+R
打开运行窗口,输入powershell
后点击确定。
- 输入
ssh root@你的服务器IP
例如ssh root@154.9.227.239
回车后,首次需要输入yes
,再次回车后即可登录服务器。
- 到此为止,我们的云服务器就远程连接上了。
优化 Apache 以应对高流量网站
第一步:安装 Apache
在优化之前,你必须确保你的服务器上安装了 Apache。如果未安装 Apache,请使用以下命令进行设置:
sudo apt update
sudo apt install apache2
对于基于 RHEL 的发行版,请使用:
sudo yum install httpd
第二步:启用 KeepAlive
启用 KeepAlive 允许单个 TCP 连接处理多个请求,从而减少开销。默认情况下,此功能可能已关闭或设置为较低的限制。
打开 Apache 配置文件:
sudo nano /etc/apache2/apache2.conf # 对于 Ubuntu
sudo nano /etc/httpd/conf/httpd.conf # 对于 CentOS/RHEL
找到 KeepAlive 指令并将其设置为 On:
KeepAlive On
设置 MaxKeepAliveRequests 以限制每个连接可以处理的请求数。高流量网站的典型值:
MaxKeepAliveRequests 100
设置 KeepAliveTimeout 以减少 Apache 在同一连接上等待其他请求的时间。对于繁忙的服务器,此值应保持较低(1-5 秒):
KeepAliveTimeout 2
保存并关闭配置文件。
第三步:优化 Apache MPM(多处理模块)
Apache 使用多处理模块(MPM)来处理请求。默认情况下,启用了 MPM Prefork 模块,这可能不适用于高流量。MPM Event 或 Worker 更适合扩展。
禁用 Prefork 并启用 Worker/Event MPM:
对于 Ubuntu:
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event # 或 mpm_worker
sudo systemctl restart apache2
对于 CentOS/RHEL:
sudo nano /etc/httpd/conf.modules.d/00-mpm.conf
# 注释掉 'LoadModule mpm_prefork_module'
# 取消注释 'LoadModule mpm_event_module' 或 'LoadModule mpm_worker_module'sudo systemctl restart httpd
根据你的服务器资源配置 MPM 设置:
对于 MPM Event 或 Worker,在 Apache 配置中调整以下内容:
<IfModule mpm_event_module>StartServers 4MinSpareThreads 25MaxSpareThreads 75ThreadsPerChild 25MaxRequestWorkers 150MaxConnectionsPerChild 1000
</IfModule>
- StartServers:服务器启动时要启动的子进程数。
- MinSpareThreads 和 MaxSpareThreads:保持可用于处理请求的空闲线程数。
- ThreadsPerChild:每个子进程的线程数。
- MaxRequestWorkers:同时客户端连接的最大数量。
- MaxConnectionsPerChild:子进程在被终止之前将处理的请求数。
第四步:使用缓存
缓存有助于通过将频繁请求的文件存储在内存或磁盘上来减少服务器负载。Apache 提供了多个缓存模块。
启用 mod_cache
和 mod_cache_disk
以进行磁盘缓存:
对于 Ubuntu:
sudo a2enmod cache
sudo a2enmod cache_disk
对于 CentOS/RHEL:
sudo nano /etc/httpd/conf/httpd.conf
添加以下行
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
在你的 Apache 配置中配置缓存:
CacheRoot "/var/cache/apache2/mod_cache_disk"
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
CacheIgnoreHeaders Set-Cookie
- CacheRoot:定义存储缓存文件的目录。
- CacheEnable disk /:为根目录启用缓存。
- CacheDirLevels 和 CacheDirLength:优化缓存存储效率。
启用 mod_expires
以设置静态内容的过期标头:
对于 Ubuntu:
sudo a2enmod expires
将其添加到你的 Apache 配置中:
<IfModule mod_expires.c>ExpiresActive OnExpiresByType image/jpg "access plus 1 month"ExpiresByType text/css "access plus 1 week"ExpiresByType application/javascript "access plus 1 week"
</IfModule>
第五步:启用 Gzip 压缩
启用 Gzip 压缩可以减小发送到客户端的文件大小,从而减少带宽使用并缩短加载时间。
启用 mod_deflate
:
对于 Ubuntu:
sudo a2enmod deflate
对于 CentOS/RHEL:
sudo nano /etc/httpd/conf/httpd.conf
添加此行
LoadModule deflate_module modules/mod_deflate.so
在 Apache 配置文件中配置 Gzip 压缩:
<IfModule mod_deflate.c>AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
</IfModule>
第六步:优化超时
减少超时设置有助于防止 Apache 等待过慢的客户端太长时间,从而为其他连接释放资源。
打开 Apache 配置文件:
sudo nano /etc/apache2/apache2.conf # 对于 Ubuntu
sudo nano /etc/httpd/conf/httpd.conf # 对于 CentOS/RHEL
为 Timeout 和 KeepAliveTimeout 设置较低的值:
Timeout 30
KeepAliveTimeout 5
第七步:配置日志级别
记录过多信息会降低 Apache 的速度。将日志级别设置为 warn,仅记录重要信息。
打开 Apache 配置文件:
sudo nano /etc/apache2/apache2.conf # 对于 Ubuntu
sudo nano /etc/httpd/conf/httpd.conf # 对于 CentOS/RHEL
调整日志级别:
LogLevel warn
第八步:使用负载均衡器
对于流量非常高的网站,在 Apache 前面使用负载均衡器(如 HAProxy 或 Nginx)可以将传入的流量分配到多个服务器上,从而确保没有单个服务器过载。
安装负载均衡器:
HAProxy:
sudo apt install haproxy # 对于 Ubuntu
sudo yum install haproxy # 对于 CentOS/RHEL
将其配置为在多个后端 Apache 服务器之间分配流量。
第九步:监控性能
使用 htop、sar 或 Apache 的内置服务器状态页面等工具定期监控 Apache 的性能,以识别瓶颈并根据需要调整配置。
要启用状态页面:
启用 mod_status
模块:
sudo a2enmod status
将以下内容添加到你的 Apache 配置中:
<Location "/server-status">SetHandler server-statusRequire local
</Location>
重启 Apache:
sudo systemctl restart apache2 # 对于 Ubuntu
sudo systemctl restart httpd # 对于 CentOS/RHEL
通过执行这些步骤,你可以配置 Apache 以更有效地处理高流量,提高可扩展性并增强网站性能。
结尾
为高流量网站优化 Apache 涉及微调 KeepAlive、MPM、缓存、压缩和超时等设置,同时还利用负载均衡器和监控性能。通过实施这些策略,你可以显着提高 Apache 处理不断增长的流量的能力,从而确保你的网站在高负载下保持快速、稳定和可扩展。
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site
相关文章:
如何在 Ubuntu 22.04 上优化 Apache 以应对高流量网站教程
简介 在本教程中,我们将学习如何优化 Apache 以应对高流量网站。 当运行高流量网站时,确保你的 Apache Web 服务器得到优化对于有效处理负载至关重要。在本指南中,我们将介绍配置 Apache 以提高性能和可扩展性的基本技巧。 为高流量网站优…...
Android 性能优化:内存优化(实践篇)
1. 前言 前一篇文章Android性能优化:内存优化 (思路篇) 大概梳理了Android 内存原理和优化的必要性及应该如何优化,输出了一套短期和长期内存优化治理的SOP方案。 那么这一篇文章就总结下我最近在做内存优化如何实践的࿰…...
开源数据集成平台白皮书重磅发布《Apache SeaTunnel 2024用户案例合集》!
2025年新年临近,Apache SeaTunnel 社区用户案例精选📘也跟大家见面啦!在过去的时间里,SeaTunnel 社区持续成长,吸引了众多开发者的关注与支持。 为了致谢一路同行的伙伴,也为了激励更多人加入技术共创&…...
用python编写一个放烟花的小程序
import pygame import random # 代码解释及使用说明: # 首先,导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制,random 用于生成随机数。 # 初始化 pygame,并设置屏幕尺寸为 800x600 像素,设置窗口标题为…...
以一个实际例子来学习Linux驱动程序开发之“设备类”的相关知识【利用设备类实现对同一设备类下的多个LED灯实现点亮或关闭】
前言 对于一个设备的驱动程序来说,其实上层用户主要看到的、用到的就是设备文件和设备类,当然用得最多的是设备文件,虽然设备类用得不多,但也是每一个设备注册实例化时必须要用到的东西,本篇博文就以一个简单的例子说…...
培训机构Day22
今天主要还是围绕着jquery讲解的,没有什么可说的。 知识点: 常用事件类型: 1.click:单击事件。鼠标,或键盘都可以触发。 2.dblclick:双击事件。 3.contextmenu:右键事件。 4.键盘相关事件&…...
Synopsys软件基本使用方法
Synopsys软件基本使用方法 1 文件说明2 编译流程3 查看波形4 联合仿真 本文主要介绍Synopsys软件vcs、verdi的基本使用方法,相关文件可从 GitHub下载。 1 文件说明 创建verilog源文件add.v、mult.v、top.vmodule add (input signed [31:0] dina,input signed [3…...
信息科技伦理与道德1:研究方法
1 问题描述 1.1 讨论? 请挑一项信息技术,谈一谈为什么认为他是道德的/不道德的,或者根据使用场景才能判断是否道德。判断的依据是什么(自身的道德准则)?为什么你觉得你的道德准则是合理的,其他…...
手机租赁平台开发实用指南与市场趋势分析
内容概要 在当今快速变化的科技时代,手机租赁平台的发展如火如荼。随着越来越多的人希望使用最新款的智能手机,但又不愿意承担昂贵的购机成本,手机租赁平台应运而生。这种模式不仅为用户提供了灵活的选择,还为企业创造了新的商机…...
ABAQUS三维Voronoi晶体几何建模
材料晶体塑性理论与细观尺度上晶体几何模型相融合的模拟方法为探究材料在塑性变形过程中的行为机制以及晶体材料优化开辟了新途径。本案例演示在CAD软件内通过Voronoi建立晶体三维模型,并将模型导入到Abaqus CAE内,完成晶体材料的有限元建模。 在AutoC…...
职场常用Excel基础04-二维表转换
大家好,今天和大家一起分享一下excel的二维表转换相关内容~ 在Excel中,二维表(也称为矩阵或表格)是一种组织数据的方式,其中数据按照行和列的格式进行排列。然而,在实际的数据分析过程中,我们常…...
如何使用 ChatGPT Prompts 写学术论文?
第 1 部分:学术写作之旅:使用 ChatGPT Prompts 进行学术写作的结构化指南 踏上学术写作过程的结构化旅程,每个 ChatGPT 提示都旨在解决特定方面,确保对您的主题进行全面探索。 制定研究问题: “制定一个关于量子计算的社会影响的研究问题,确保清晰并与您的研究目标保持一…...
【深度学习】Java DL4J基于 LSTM 构建新能源预测模型
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探…...
Jetson系列部署YOLOv8模型教程
简介 NVIDIA Jetson系列是专为边缘计算设计的紧凑型计算模块,其目标用户为AI开发者、嵌入式系统工程师以及需要在设备端实时进行数据处理与AI推断的创新者。通过提供灵活的硬件平台,结合NVIDIA强大的GPU计算资源,Jetson系列能够支持复杂的机…...
【HAProxy】如何在Ubuntu下配置HAProxy服务器
HAProxy 是一款免费、开源且强大的反向代理程序,它为 HTTP 和 TCP 基础的应用提供了高可用性、负载均衡以及代理功能,因此对于管理高流量服务器(或 Web 应用)来说,通过将负载分散到多个节点服务器上,它是一…...
gesp(C++一级)(7)洛谷:B3863:[GESP202309 一级] 小明的幸运数
gesp(C一级)(7)洛谷:B3863:[GESP202309 一级] 小明的幸运数 题目描述 所有个位数为 k k k 的正整数,以及所有 k k k 的倍数,都被小明称为“ k k k 幸运数”。小明想知道正整数 L L L 和 R R R 之间&a…...
【数据库系统概论】数据库完整性与触发器--复习
在数据库系统概论中,数据库完整性是指确保数据库中数据的准确性、一致性和有效性的一组规则和约束。数据库完整性主要包括实体完整性、参照完整性和用户定义完整性。以下是详细的复习内容: 1. 数据库完整性概述 数据库完整性是指一组规则,这…...
【YOLOv8模型网络结构图理解】
YOLOv8模型网络结构图理解 1 YOLOv8的yaml配置文件2 YOLOv8网络结构2.1 Conv2.2 C3与C2f2.3 SPPF2.4 Upsample2.5 Detect层 1 YOLOv8的yaml配置文件 YOLOv8的配置文件定义了模型的关键参数和结构,包括类别数、模型尺寸、骨干(backbone)和头部…...
使用 commitlint 和 husky 检查提交描述是否符合规范要求
在上一小节中,我们了解了 Git hooks 的概念,那么接下来我们就使用 Git hooks 来去校验我们的提交信息。 要完成这么个目标,那么我们需要使用两个工具: 注意:npm 需要在 7.x 以上版本。 1. commitlint 用于检查提交信…...
QT集成IntelRealSense双目摄像头3,3D显示
前两篇文章,介绍了如何继承intel realsense相机和opengl。 这里介绍如何给深度数据和色彩数据一块显示到opengl里面。 首先,需要了解深度数据和彩色数据是如何存储的。先说彩色数据。彩色图像一般都是RGB,也就是每个像素有三个字节…...
Vue 中el-table-column 进行循环,页面没渲染成功
文章目录 前言效果图代码示例可能出现的问题及原因解决思路 前言 实现效果:el-table-column 进行循环,使之代码简化 遇到的问题: data进行默认赋值,操作列的删除都可以出来,其他表格里面的数据没出来 效果图 示例&am…...
渗透测试-非寻常漏洞案例
声明 本文章所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法. 此文章不允许未经授权转发至除先知社区以外的其它平台!࿰…...
Spring Boot 实战篇(四):实现用户登录与注册功能
目录 Spring Boot 实战篇(四):实现用户登录与注册功能 一、用户注册功能 (一)前端页面设计(简要提及) (二)后端实现 二、用户登录功能 (一)…...
VScode SSH 错误:Got bad result from install script 解決
之前vscode好好的,某天突然连接报错如下 尝试1. 服务器没有断开,ssh可以正常连接 2. 用管理员权限运行vscode,无效 3. 删除服务器上的~/.vscode-server 文件夹,无效 试过很多后,原来很可能是前一天anaconda卸载导致注册表项 步…...
openGauss与GaussDB系统架构对比
openGauss与GaussDB系统架构对比 系统架构对比openGauss架构GaussDB架构 GaussDB集群管理组件 系统架构对比 openGauss架构 openGauss是集中式数据库系统,业务数据存储在单个物理节点上,数据访问任务被推送到服务节点执行,通过服务器的高并…...
【ArcGISPro/GeoScenePro】检查并处理高程数据
数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 数字高程模型 (DEM) 是一种栅格,可显示地面或地形的高程。 数字表面模型 (DSM) 是另一种高程栅格,可显示表面的高度,例如建筑物或树冠的顶部。 您需要准备 DEM 和 DSM 以供分析…...
WebRTC的三大线程
WebRTC中的三个主要线程: signaling_thread,信号线程:用于与应用层交互worker_thread,工作线程(最核心):负责内部逻辑处理network_thread,网络线程:负责网络数据包的收发…...
HTML-文本标签
历史上,网页的主要功能是文本展示。所以,HTML 提供了大量的文本处理标签。 1.<div> <div>是一个通用标签,表示一个区块(division)。它没有语义,如果网页需要一个块级元素容器,又没…...
C# 在PDF中添加和删除水印注释 (Watermark Annotation)
目录 使用工具 C# 在PDF文档中添加水印注释 C# 在PDF文档中删除水印注释 PDF中的水印注释是一种独特的注释类型,它通常以透明的文本或图片形式叠加在页面内容之上,为文档添加标识或信息提示。与传统的静态水印不同,水印注释并不会永久嵌入…...
Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结
注:因为本人也是第一次接入广告与支付SDK相关的操作,网上也查了很多教程,很多也都是只言片语或者缺少一些关键步骤的说明,导致本人也是花了很多时间与精力踩了很多的坑才搞定,发出来也是希望能帮助到其他人在遇到相似问…...
docker部署项目
docker部署项目 (加载tar包:docker image load -i mysql.tar) 一、jdk环境配置 1.jdk下载地址 --Java Archive | Oracle 中国 --选择好版本进入 --下载Linux x64 Compressed Archive的链接 2.解压 --创建文件夹:mkdir /ro…...
C# 设计模式(创建型模式):工厂模式
C# 设计模式(创建型模式):工厂模式 引言 在软件设计中,创建型模式是用来创建对象的设计模式,它们帮助我们将对象的创建过程从业务逻辑中分离出来,减少代码的重复性和耦合度。工厂模式作为创建型设计模式之…...
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架 前言 提出这一模型的初衷为了应对大量计算资源和数据集出现伴随的知识产权问题。使用LLM合成类似人类的内容容易受到恶意利用,包括垃圾邮件和抄袭。 ChatGPT等大语言模型LLM的开发取得的进展标志着人机对话交互的范式…...
Lumos学习王佩丰Excel第二十三讲:Excel图表与PPT
一、双坐标柱形图的补充知识 1、主次坐标设置 2、主次坐标柱形避让(通过增加两个系列,挤压使得两个柱形挨在一起) 增加两个系列 将一个系列设置成主坐标轴,另一个设成次坐标轴 调整系列位置 二、饼图美化 1、饼图美化常见设置 …...
【Vue】v-if 和 :is 都是 Vue 中的指令,但它们用于不同的目的和场景
v-if v-if 是一个条件渲染指令,用于根据表达式的真假值来决定是否渲染一块内容。当 v-if 的表达式为真(truthy)时,Vue 会确保元素被渲染到 DOM 中;当表达式为假(falsy)时,元素不会被…...
private static final Logger log = LoggerFactory.getLogger()和@Slf4j的区别
一、代码方面 - private static final Logger log LoggerFactory.getLogger()方式 详细解释 这是一种传统的获取日志记录器(Logger)的方式。LoggerFactory是日志框架(如 Log4j、Logback 等)提供的工厂类,用于创建Lo…...
【项目】基于趋动云平台的Stable Diffusion开发
【项目】基于趋动云平台的Stable Diffusion开发 (一)登录趋动云(二)创建项目:(三)初始化开发环境:(四)运行代码(五)运行模型 …...
Git的.gitignore文件详解与常见用法
诸神缄默不语-个人CSDN博文目录 在日常使用 Git 进行版本控制时,我们经常会遇到一些不需要被提交到远程仓库的文件(例如日志文件、临时配置文件、环境变量文件等)。为了忽略这些文件的提交,Git 提供了一个非常有用的功能…...
客户端二维码优化居中和背景
原始 处理后...
Linux 安装运行gatk的教程
1.下载安装 wget https://github.com/broadinstitute/gatk/releases/download/4.1.8.1/gatk-4.1.8.1.zip2.解压 unzip *.zip3.查看 gatk --help 如下显示表示安装成功: 注意:仅限在该包所在位置的路径下能使用...
C++string类
1.为什么学习string类? 1.1C语言中的字符串 C语言中,字符串是以‘\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OO…...
下载linux aarch64版本的htop
htop代码网站似乎没有编译好的各平台的包,而自己编译需要下载一些工具,比较麻烦。这里找到了快速下载和使用的方法,记录一下。 先在linux电脑上执行: mkdir htop_exe cd htop_exe apt download htop:arm64 # 会直接下载到当前目…...
MYSQL---------支持数据类型
数值类型 整数类型 TINYINT:通常用于存储小范围的整数,范围是-128到127或0到255(无符号)。例如,存储年龄可以使用TINYINT类型。示例:CREATE TABLE users (age TINYINT);SMALLINT:范围比TINYINT…...
黑马JavaWeb开发跟学(十四).SpringBootWeb原理
黑马JavaWeb开发跟学 十四.SpringBootWeb原理 SpingBoot原理1. 配置优先级2. Bean管理2.1 获取Bean2.2 Bean作用域2.3 第三方Bean 3. SpringBoot原理3.1 起步依赖3.2 自动配置3.2.1 概述3.2.2 常见方案3.2.2.1 概述3.2.2.2 方案一3.2.2.3 方案二 3.2.3 原理分析3.2.3.1 源码跟踪…...
迅为RK3568开发板编译Android12源码包-设置屏幕配置
在源码编译之前首先要确定自己想要使用的屏幕并修改源码,在编译镜像,烧写镜像。如下图所示: 第一步:确定要使用的屏幕种类,屏幕种类选择如下所示: iTOP-3568 开发板支持以下种类屏幕: 迅为 LV…...
Spring Boot 中 TypeExcludeFilter 的作用及使用示例
在Spring Boot应用程序中,TypeExcludeFilter 是一个用于过滤特定类型的组件,使之不被Spring容器自动扫描和注册为bean的工具。这在你想要排除某些类或类型(如配置类、组件等)而不希望它们参与Spring的自动装配时非常有用。 作用 …...
Prometheus 采集 JVM 数据
Prometheus 采集 JVM 数据通常通过集成 JMX Exporter(Java Management Extensions Exporter)实现。以下是完整的介绍和操作步骤: 1. 原理概述 JVM 数据采集依赖于 JMX(Java Management Extensions),JVM 提…...
OpenNJet v3.2.0正式发布!
在这个版本中,NJet实现重大突破,提供了动态Upstream的能力。这是一个关键的特性,使得NJet可以按需动态管理上游服务器池,从而使得业务方可以按需配置资源池,实现业务分区、算法切换;结合动态路由技术&#…...
TinaCMS: 革命性的开源内容管理框架
在如今的数字时代,高效的内容管理系统(CMS)已成为构建内容丰富网站和应用程序的必需品。传统 CMS,如 WordPress 和 Drupal,功能丰富但复杂度高。而新一代 CMS,例如 TinaCMS,以其灵活性和开发者友…...
VuePress2配置unocss的闭坑指南
文章目录 1. 安装依赖:准备魔法材料2. 检查依赖版本一定要一致:确保魔法配方准确无误3. 新建uno.config.js:编写咒语书4. 配置config.js和client.js:完成仪式 1. 安装依赖:准备魔法材料 在开始我们的前端魔法之前&…...