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

SPIFFS与LittleFS的对gz文件格式的区别

 SPIFFS 只能安装在Arduino上。LittleFS支持Arduino IDE和VScode的 PlatformIO。

SPIFFS

  1. serveStaticserver.serveStatic("/", SPIFFS, "/") 负责提供 SPIFFS 文件系统中的文件。您可以在 SPIFFS 上放置 .gz 文件,并该方法将自动处理它们。

  2. MIME 类型: 在这个例子中,request->send(SPIFFS, "/example.gz", "application/javascript", true); 将 .gz 文件的 MIME 类型设置为 application/javascript。您可以根据文件的实际类型(例如,如果是 CSS,可以使用 text/css)进行调整。

  3. gzip 内容编码: 参数 true 指定将启用内容编码,这将发送 Content-Encoding: gzip 头。这对于告知浏览器接收到的文件是压缩的至关重要。

  4. 404 异常处理: 修改了 onNotFound 的处理程序,以便返回 404 状态码,而不是 400

LittleFS

  1. 手动处理: LittleFS 是一种更灵活的文件系统,可能没有内置相同的自动处理机制。为了支持 gzip 文件并告知浏览器这些文件经过压缩,您需要手动添加 Content-Encoding 头部。

  2. 兼容性: 由于 LittleFS 更专注于灵活性和性能,可能在处理某些 MIME 类型时不自动添加一些 HTTP 头部,如 Content-Encoding。这要求开发者在响应中手动设置这些头部

 

 上述2点只看文字无法深有体会。先以实例验证。

ESP32代码

 

27_VueJs  vendor中的vue.min.js.gz是vue的文件,为了节约文件体积采用gz压缩上传至ESP32的FLASH。如果用

上传,则浏览器可以从ESP32获取到vue.min.js文件并正确渲染,效果如下图:

 但如果使用Arduino IDE 的

LittleFS上传同样的文件, 浏览器则不能正确渲染。原因是LittleFS需要手动添加 Content-Encoding 头部对gzip支持。

 response->addHeader("Content-Encoding", "gzip"); // 添加 Content-Encoding 头  

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 静态IP代理和动态IP代理的区别
  • 使用ollama分别在我的window、mac、小米手机上部署体验llama3-8b(文末有福利)
  • C++——C++11
  • 【深度学习】VITS中的条件VAE,VAE的隐变量z为何要服从正太分布(2)
  • python == 与 is区别
  • 零基础入门转录组数据分析——机器学习算法之xgboost(筛选特征基因)
  • 返校季热度持续发酵,赛盈分销浅谈下半年选品趋势!
  • vue3父子组件通信
  • 开源大模型(LLM)震撼来袭:解锁AI语言处理新纪元,引领全球开发者共创未来!
  • 树与二叉树【下】
  • nagle算法作用
  • 采购在供应链管理中有什么作用?8个步骤拆解供应链采购流程!
  • Java工厂模式详解:方法工厂模式与抽象工厂模式
  • 什么是SpringMVC?
  • 【一图学技术】6.反向代理 vs API网关 vs 负载均衡的原理和使用场景
  • 【译】JS基础算法脚本:字符串结尾
  • ES6指北【2】—— 箭头函数
  • AHK 中 = 和 == 等比较运算符的用法
  • CentOS7 安装JDK
  • ES10 特性的完整指南
  • mysql innodb 索引使用指南
  • ng6--错误信息小结(持续更新)
  • nodejs:开发并发布一个nodejs包
  • Vue学习第二天
  • Vultr 教程目录
  • 从tcpdump抓包看TCP/IP协议
  • 给Prometheus造假数据的方法
  • 普通函数和构造函数的区别
  • 我这样减少了26.5M Java内存!
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • ######## golang各章节终篇索引 ########
  • #07【面试问题整理】嵌入式软件工程师
  • #知识分享#笔记#学习方法
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (四)Android布局类型(线性布局LinearLayout)
  • (转)memcache、redis缓存
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .“空心村”成因分析及解决对策122344
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET构架之我见
  • .NET中的十进制浮点类型,徐汇区网站设计
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @Resource和@Autowired的区别
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [1181]linux两台服务器之间传输文件和文件夹
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)