关于静态资源
第一步:使用静态资源的合并压缩等前端优化手段
第二步:使用CDN和云
第三步:动静分离,将静态图片,js,css存放到单独的域名。
带来好处:
(1)使用单独域名,浏览器不会把主域名下的 cookie 传给该域,减少了网络开销,一定程度提高了页面加载速度。
(2)将Web应用程序中静态和动态的内容分别放在不同的 Web 服务器上,有针对性地处理动态和静态内容,从而达到性能的提升。
面临问题:
动静分离分离后,数据内容以几何级数增长,尤其是那些小文件,几K到几百K不等,数量巨多,传统的文件系统处理起来很是吃力,面临以下问题:
(1)磁盘IO过高
海量文件检索效率低,由于现有的存储系统无法有效管理海量小文件,并且在单个目录下存放文件的数量有一定的限制,一旦文件数到达了一定规模之后,文件的检索速度就急剧下降。当前用户只能通过多级目录来组织存放大量的小文件,随着目录深度的增加,文件的检索开销进一步增大,检索效率随之下降(大量的磁盘寻址)。
(2)备份困难
(3)单点问题,容量和读写无法水平扩展,还存在故障的可能。
现有的存储系统一旦出现连续的磁盘故障或者服务器失效的情况,将会立即中断应用的读写过程,严重的甚至造成数据丢失。
小文件的备份速度极慢,而备份大量小文件将会耗费大量的时间和系统资源。
用户在存储大量小文件时不得不采用了费时费力的方式,将文件复制多份到多套的存储系统中以提高安全性。
解决方案:
使用分布式文件系统(Distributed File System):指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。
优点:
(1)扩展能力: 是一个分布式文件系统最重要的特点。
(2)高可用性: 在分布式文件系统中,高可用性包含两层,一是整个文件系统的可用性,二是数据的完整和一致性。
(3)协议和接口: 分布式文件系统提供给应用的接口。
(4)弹性存储: 可以根据业务需要灵活地增加或缩减数据存储以及增删存储池中的资源,而不需要中断系统运行。弹性存储的最大挑战是减小或增加资源时的数据震荡问题。
(5)压缩、加密、去重、缓存和存储配额: 这些功能的提供往往考验一个分布式文件系统是否具有可扩展性,一个分布式文件系统如果能方便的进行功能的添加而不影响总体的性能,那么这个文件系统就是良 好的设计。存储配额就是可以为应用所能使用的存储空间进行配额限制,比如每一应用只能使用最大配额范围内的存储空间。
例如使用MongoDB分布式文件系统的静态资源方案:
每一步涉及到的具体技术选型问题需要具体问题具体分析
图片显示的时候可以等比例缩略图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述