图像优化、处理和托管
托管和处理图片相当复杂。要正确执行此操作并确保其与您的网站兼容,需要涉及许多要素。
托管图像需要 3 个关键要素:
- 存储图像的地方
- 按需调整图像大小的方法
- CDN用于缓存图像并尽快将其传送给您的用户。
您可以通过实施自己的解决方案或将所有复杂性委托给第三方服务(如 AWS 或 Cloudinary)来实现这一点。
让我们分析一下这些元素及其成本,在本文结束时,您将能够决定哪种方式适合您的项目。
贮存
用于托管用户上传图片的地方。它可以是您自己的服务器,也可以使用第三方服务,例如 Amazon S3 或 Cloudinary。无论哪种情况,您都需要考虑图片托管的成本,最终价格取决于您预期接收的图片数量和流量。
DigitalOcean:
- 最便宜的 Doplet,为 OS+其他系统提供至少 5GB 的免费空间。
- 最多 50GB 的容量是将文件保存在同一服务器上的一个不错的选择。超过 50GB 的容量,存储价格会大幅上涨。如果是这种情况,最好考虑 Digital Ocean Spaces。
亚马逊 S3:
- 仅 S3 存储。
Cloudinary:
- 一体化解决方案,难以单独比较。
图像调整大小
收到用户的图片后,您需要在网站上显示调整大小的版本。我们不希望用户在浏览我们的网站时下载大尺寸的图片,尤其是在移动设备上。速度对于用户体验和搜索引擎优化 (SEO) 至关重要。
调整策略
上传时
在我们存储用户图片后,您需要创建原始图片的调整大小版本。这需要您提前了解您的网站所需的尺寸。如果之后您需要新的尺寸,则需要重新生成所有之前的图片。
一经请求
推荐的解决方案,但自行实现起来更复杂。
您无需直接调用图片,而是通过一个特殊的 URL 请求图片,该 URL 会生成新的图片,并在 URL 中传递新的尺寸参数。例如:
https://domain.com/image-resize?source={local-path}&width=500&height=500
实现
自己的解决方案
在这种情况下,成本是开发时间和代码的维护。
如果您选择在上传时调整图像大小,则需要考虑在后台进行调整大小,以免让您的用户在您处理图像时等待。
AWS
使用 AWS,您必须创建一个无服务器功能,当新图像上传到 S3 存储桶时触发该功能,或者创建一个 URL 来按需执行该功能并生成调整大小的图像。
亚马逊可能会提供解决方案来简化所有这些流程以及更多内容:
Cloudinary
Cloudinary 的服务包含了所有这些功能。但价格比较高,请务必仔细核对。
- Cloudinary 定价https://cloudinary.com/pricing
CDN
在图片托管地和用户之间建立 CDN 是一个好习惯。它可以从最近的位置向用户提供图片,从而提高网站速度。如果您正在使用某个服务来托管图片,那么它可能已经包含 CDN。
Cloudflare
假设您将图片托管在自己的服务器上。在这种情况下,Cloudflare 是您的最佳解决方案,他们提供免费版本,不仅为您的图片提供 CDN,还为您的整个网站提供 CDN,在用户和服务器之间提供安全保护。
AWS Cloudfront
AWS 的 CDN 解决方案。可轻松连接到现有的 S3 bucket。如果您正在使用 AWS 的“无服务器镜像处理程序”解决方案,它已包含 Cloudfront。
https://aws.amazon.com/cloudfront/
Cloudinary
已经默认提供CDN。
结论
DigitalOcean / 自有服务器
- 优点
✅ 高达 50GB 的存储空间
✅固定成本
✅ Cloudflare 的 CDN 和安全
- 缺点
❌ 图像处理需要你自己实现
❌ 如果您需要超过 50GB,则需要考虑其他选择。
AWS
- 优点
✅ Amazon S3 非常便宜
✅ 开发人员存储文件的热门选择
✅ Cloudfront CDN
✅ AWS 的图像服务器处理程序解决方案简化了一切
✅ 无限扩展,价格低廉
- 缺点
❌ 没有免费选项,但非常便宜
❌ 您需要了解 AWS 的基础知识
Cloudinary
- 优点
✅ 免费高达 25GB = 25 个积分
✅ 简单的选项
✅ 一体化解决方案
✅ 额外功能(小部件、视频托管等)
- 缺点
❌这可能会很昂贵
❌ 要获得文件副本,您需要每月至少支付 99 美元
鏂囩珷鏉ユ簮锛�https://dev.to/xpromx/image-optimization-processing-and-hosting-2fl6