将图片存储到 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 存储桶中的远程图片,可以有效优化前端项目的加载性能。

【记录】使用R2 CDN替换本地项目图片以加速图片加载的更多相关文章

  1. 《前端之路》之 前端图片 类型 & 优化 & 预加载 & 懒加载 & 骨架屏

    目录 09: 前端图片 类型 & 优化 & 预加载 & 懒加载 & 骨架屏 09: 前端图片 类型 & 优化 & 预加载 & 懒加载 & ...

  2. 页面滚动图片等元素动态加载插件jquery.scrollLoading.js

    如果一个网页很长,那么该页面的加载时间也会相应的较长.而这里给大家介绍的这个jQuery插件scrollLoading的作用则是,对页面元素进行动态加载,通俗的说就是滚到哪就加载到哪,屏幕以下看不见的 ...

  3. jQuery页面滚动图片等元素动态加载实现

    一.关于滚动显屏加载 常常会有这样子的页面,内容很丰富,页面很长,图片较多.比如说光棍节很疯狂的淘宝商城页面. 或者是前段时间写血本买了个高档耳机的京东商城页面,或者是新浪微博之类. 这些页面图片数量 ...

  4. Java之——Web项目中DLL文件动态加载方法

    本文转自:https://blog.csdn.net/l1028386804/article/details/53903557 在Java Web项目中,我们经常会用到通过JNI调用dll动态库文件来 ...

  5. [转]jQuery页面滚动图片等元素动态加载实现

    本文转自:http://www.zhangxinxu.com/wordpress/?p=1259 一.关于滚动显屏加载 常常会有这样子的页面,内容很丰富,页面很长,图片较多.比如说光棍节很疯狂的淘宝商 ...

  6. IDEA问题之“微服务启动项目时,不会加载Spring Boot到Services中”

    1.启动项目时,不会加载Spring Boot到Services中 现象解析: 启动项目时 会在debug的位置加载项目 注:这里没有配图,因为问题已解决,未记录图,需往后遇到记录 解决方案: 需要在 ...

  7. ios 图片的两种加载方式

    控件加载图片,plist,懒加载,序列帧动画,添加动画效果. IOS中有2种加载图片的方式. 方式一:有缓存(图片所占用的内存会一直停留在程序中) + (UIImage *)imageNamed:(N ...

  8. AngularJS进阶(三十九)基于项目实战解析ng启动加载过程

    基于项目实战解析ng启动加载过程 前言 在AngularJS项目开发过程中,自己将遇到的问题进行了整理.回过头来总结一下angular的启动过程. 下面以实际项目为例进行简要讲解. 1.载入ng库 2 ...

  9. IDEA下利用Jrebel插件实现JFinal项目main方法【热加载】

    IDEA下利用Jrebel插件实现JFinal项目main方法[热加载] Jrebel破解办法 https://github.com/ilanyu/ReverseProxy/releases/tag/ ...

  10. 配置项目启动的时候就加载 servlet

    load-on-startup值为0 就是在项目启动的时候自动加载该servlet

随机推荐

  1. JavaScript 语句后可以省略分号么?

    摘自知乎:https://www.zhihu.com/question/20298345 田乐:加与不加是风格问题,风格争议不需要有个定论.关键的问题在于如何"争论",处理好冲突, ...

  2. css超出部分...显示

    首先需要设置宽 white-space: nowrap;// 文字不换行 overflow: hidden;// 超出隐藏 text-overflow: ellipsis;   实现移入后正常显示的可 ...

  3. SSIS连接Excel2007版本之后的数据源

    今天我发现了新大陆,兴奋得不得了,由于原文写得太过详细与专业,我就偷偷懒直接Copy过来了,怕自己以后没地儿找,哈哈哈 原文链接:https://www.cnblogs.com/biwork/p/34 ...

  4. 在美国和以色列的技术支持下BP机可以爆炸,那么苹果手机是否也可以被远程引爆

    要知道,这一切在技术上都是可以实现的. 由此可见,带电池的产品,最为稳妥的办法就是购买在中国组装的产品,否则其安全性是无法保证的.有人可能会说美国政府不会单独的通过这种方法去定向的杀害某个中国普通人, ...

  5. CUDA编程学习 (1)——CUDA C介绍

    1. 内存分配和数据移动 API 函数 CUDA编程模型是一个异构模型,需要CPU和GPU协同工作.在CUDA中,host 和 devic e 是两个重要的概念,我们用host指代CPU及其内存,而用 ...

  6. Air780E软件指南:zlib解压示例

    一.ZLIB解压工具简介 Zlib解压工具是一个广泛使用的压缩和解压缩库,主要用于处理数据的压缩和解压缩任务.Zlib使用的是DEFLATE算法,这是一种通用的压缩算法.它被应用在很多场景中,比如压缩 ...

  7. 干货分享:Air700ECQ的硬件设计,第二部分

    ​ 接下来分享第二部分. 3.10. 功能管脚 3.10.1. MAIN_RI 管脚名 类型 序号 电压域 作用 MAIN_RI DO 5 LDOAON 振铃信号,唤醒输出管脚,用于唤醒AP 表格 1 ...

  8. 反汇编动态调试器之x64dbg

    转载:https://cloud.tencent.com/developer/article/2337843 x64dbg 是一款开源.免费.功能强大的动态反汇编调试器,它能够在Windows平台上进 ...

  9. windows下执行Python脚本

    由于业务需要,有些python脚本需要在Windows系统上,并且支持定时执行 1) 一. 创建.bat批处理文件 新创建文件并将扩展名改为.bat 二. 写入执行python脚本的语句 @echo ...

  10. Winform窗体控件双向绑定数据模拟读写PLC数据

    1.用Modbus工具模拟PLC 2.创建一个实体类 点击查看代码 internal class Data : INotifyPropertyChanged { ushort[] ushorts = ...