当前位置: 首页 > news >正文

【记录】使用R2 CDN替换本地项目图片以加速图片加载

将图片存储到 Cloudflare 的存储桶中,并通过其提供的公共 URL 来替换代码中的本地路径,可以减小项目中打包的图片文件体积

实现方法的详细步骤:

1. 上传图片到 Cloudflare 的存储桶

(1)登录 Cloudflare Dashboard

  • 进入 Cloudflare 的管理后台。

(2)配置 R2 存储桶(如果使用 R2)

  • 创建一个 R2 存储桶,并上传图片到该存储桶。
  • 记录每张图片的公共 URL(可以通过访问权限设置为公开,生成访问地址)。

(3)获取图片的公共链接

  • 确保存储桶支持公开访问。
  • 示例公共 URL:
    https://<your-account-id>.r2.cloudflarestorage.com/<bucket-name>/home_top_bg.webp
    

2. 替换代码中的本地路径为远程 URL

在你的 JS 文件中,修改导入路径,直接使用图片的 Cloudflare URL。例如:

原代码:
import homeTopBg from "../../images/webp/home_top_bg.webp";
import netHomeTopBg from "../../images/webp/nothome_top_bg.webp";
替换为:
const homeTopBg = "https://<your-account-id>.r2.cloudflarestorage.com/<bucket-name>/home_top_bg.webp";
const netHomeTopBg = "https://<your-account-id>.r2.cloudflarestorage.com/<bucket-name>/nothome_top_bg.webp";

3. 优化图片加载(可选)

使用动态导入(懒加载)

如果这些图片不是页面初始化时必须加载的资源,可以通过动态导入减少初始加载时间:

const loadImages = async () => {const homeTopBg = await import("https://<your-account-id>.r2.cloudflarestorage.com/<bucket-name>/home_top_bg.webp");const netHomeTopBg = await import("https://<your-account-id>.r2.cloudflarestorage.com/<bucket-name>/nothome_top_bg.webp");
};
loadImages();
设置图片缓存
  • 确保 Cloudflare 的存储桶开启了缓存功能,可以通过 HTTP 头部如 Cache-Control 指令优化图片的加载性能。

4. 在 Webpack 中处理远程资源

如果你希望在 Webpack 配置中直接替换图片路径,可以通过 Webpack 的别名或插件实现:

使用别名替换路径

webpack.config.js 中配置:

module.exports = {resolve: {alias: {"@images": "https://<your-account-id>.r2.cloudflarestorage.com/<bucket-name>",},},
};

在代码中:

import homeTopBg from "@images/home_top_bg.webp";
使用 DefinePlugin 替换变量

webpack.config.js 中添加:

const webpack = require('webpack');
module.exports = {plugins: [new webpack.DefinePlugin({HOME_TOP_BG_URL: JSON.stringify("https://<your-account-id>.r2.cloudflarestorage.com/<bucket-name>/home_top_bg.webp"),}),],
};

在代码中使用:

const homeTopBg = HOME_TOP_BG_URL;

5. 优势与注意事项

优势
  • 减小打包体积:不再需要将大图片打包到项目中。
  • 灵活性:可以随时替换图片而无需重新打包项目。
  • 缓存优化:通过 Cloudflare 的 CDN 提升图片加载速度。
注意事项
  1. 网络依赖:图片加载依赖网络,如果网络不稳定可能会影响加载体验。
  2. 权限配置:确保存储桶的访问权限设置为公开,避免图片无法加载。
  3. CORS 问题:如果图片需要跨域加载,确保 Cloudflare 存储桶设置了 Access-Control-Allow-Origin 头部。

通过这种方式,将本地大图片替换为 Cloudflare 存储桶中的远程图片,可以有效优化前端项目的加载性能。

http://www.lryc.cn/news/510653.html

相关文章:

  • 12.13[java exp4][debug]nginx 500,究极未解之谜,出自重启,解决自重启,迷???
  • Disruptor 高性能环形消息框架
  • Python列表(二)
  • 计算机网络:应用层 —— 网络应用模式
  • @Repository注解和@mapper的区别
  • 解锁成长密码:探寻刻意练习之道
  • cuda-cuDnn
  • 如何使用Python和PIL库生成带竖排文字的封面图像
  • 低代码开发 实战转型案例一览
  • SQL Server中FIRST_VALUE和 LAST_VALUE窗口函数允许在一个指定的窗口内返回第一个或最后一个值
  • 机器学习-高斯混合模型
  • 微信V3支付报错 平台证书及平台证书序列号
  • 41.欠采样技术下变频不能用与跨两个nyquist的情况下
  • 20241227通过配置nomodeset参数解决更新grub之后,ubuntu20.04.5无法启动的问题
  • 从 GitLab.com 到 JihuLab.com 的迁移指南
  • 深度学习中的并行策略概述:2 Data Parallelism
  • Python大数据可视化:基于Python对B站热门视频的数据分析与研究_flask+hive+spider
  • 利用 Python 编写一个 VIP 音乐下载脚本
  • linux内核如何实现TCP的?
  • 【Spring】基于XML的Spring容器配置——FactoryBean的使用
  • Docker使用——国内Docker的安装办法
  • 电商会员门店消费数据分析
  • Vue.js 入门与进阶:打造高效的前端开发体验
  • Java包装类型的缓存
  • 【蓝桥杯——物联网设计与开发】拓展模块4 - 脉冲模块
  • .NET平台用C#通过字节流动态操作Excel文件
  • SpringMVC详解
  • springboot、spring、springmvc有哪些注解
  • Apache Commons ThreadUtils 的使用与优化
  • 重温设计模式--5、职责链模式