-
build vue3 后压缩的文件在哪_盘点只读压缩文件系统
2020-12-28 14:50:20在存储容量有限的嵌入式设备上,一般对于系统分区在使用过程中没有数据写入需求,同时希望可以节省存储空间——只读压缩文件系统应运而生。另外,只读压缩文件系统也可用于归档文件。相比tar,zip等压缩软件,只读...为什么需要只读压缩文件系统?
在存储容量有限的嵌入式设备上,一般对于系统分区在使用过程中没有数据写入需求,同时希望可以节省存储空间——只读压缩文件系统应运而生。另外,只读压缩文件系统也可用于归档文件。相比tar,zip等压缩软件,只读压缩文件系统的性能和灵活性都更好。Linux早期的只读文件系统有CramFS和SquashFS,以及参考了上述两个文件系统设计的用户态只读压缩文件系统CromFS。另外,最近两年在Android平台上实现商用的EROFS也值得关注。EROFS针对手机使用场景,对读放大和内存占用过多从设计理念上带来了一些新的优化。
CramFS,SquashFS,CromFS横评
CramFS被设计成用于存储空间很小的嵌入式设备上,倾向于极致简单、极其节省空间。在使用上存在诸多限制,如:单个文件大小不能超过16MB、文件系统大小略大于256MB(最后一个文件允许超过256MB空间范围,即文件系统总大小不超过272MB)。CramFS的gid只保存8位,mkcramfs会简单的将gid截断保留最后8位(有一些安全风险)。CramFS支持硬链接,但是被硬链接的文件引用计数不会增加。CramFS文件没有时间戳,所有文件的创建/访问时间戳都是1970年1月1日 0:00:00 GMT。(最近访问过的文件可能会被更新时间戳,但只在内存中保存。)CramFS的镜像只支持被同样字节对齐方式的机器创建和挂载使用,页面大小只支持4KB。
SquashFS的出现替代了CramFS,但CramFS通过支持XIP(Execution In Place)有了新的用武之地。SquashFS设计上相比CramFS去掉了大部分限制因素:其会保存完整的uid/gid(32位)、文件创建时间,单文件最大支持16 EB,文件系统最大大小也是16 EB。压缩后的inode平均消耗8字节,根据文件类型不同(文件、目录、符号链接等)inode大小有所变化。对于压缩文件系统,压缩输入的数据块大小(chunk size)决定了压缩率收益和潜在的读放大开销。SquashFS 2.x版本的chunk size最大为64KB, SquashFS 3.x版本的chunk size最大可达1MB。SquashFS 3.x版本默认的chunk size是128KB,相比4KB大小的chunk size压缩率有明显提升。SquashFS还支持fragment block,即多个小文件存入一个block,极大的提升了压缩率。SquashFS支持大端和小端对齐方式,可以在不同的字节序机器上创建和挂载。
CromFS的主要设计目标是高压缩率,性能和内存使用量不是它关心的方面。CromFS是一个用户态文件系统,通过块级别去冗和高压缩率算法实现压缩收益最大化。同CramFS和SquashFS的详细特性对比如下表:
表1 CramFS,SquashFS,CromFS对比
EROFS带来哪些新变化?
EROFS的全称是Enhanced Read-Only File System,相比前述只读压缩文件系统最大的不同是压缩思路和解压方式的改变。不同于以往固定输入长度(Fixed Sized Input)的压缩形式,EROFS采用固定输出长度(Fixed Sized Output)的压缩思路。这解决了固定输入长度的压缩带来的读放大问题,4KB的固定输出长度压缩就可达到128KB的固定输入长度压缩的压缩率。对于SquashFS来说,达到同样的压缩收益可能需要比EROFS多读几倍的数据块。另外,SquashFS在运行时内存使用方面也远远多于EROFS的原地解压策略,这在系统处于低内存状态时会导致读性能大幅下降。为了更好的解压速度同时保证一定的压缩率,EROFS使用的压缩算法为LZ4。默认压缩输出块大小为4KB,其他特性支持上均对标SquashFS。这里不再一一赘述。
定长输出和定长输入的示意如下图所示,EROFS会通过多次尝试不同长度的输入数据将其压缩到固定大小(4KB)的输出块上,SquashFS则是根据预先配置好的输入长度(Chunk Size)压缩数据并写到输出块上(可能跨多个数据块)。当EROFS的固定输出长度设为存储设备的块大小(如:4KB)时,可以认为没有读放大。因为无论要读的内容是哪一部分以及大小,对于块设备来说都至少要读取一个数据块。
图 1 定长输出和定长输入的区别
在内存分配上,EROFS根据上层希望读取的内容是否需要将盘上读出数据全部解压会选择不同的策略。对于需全部解压的情况,EROFS会使用VFS已分配的Page Cache内存页,这样节省了内存的占用;对于需部分解压的情况,EROFS则会独立分配缓存页以便后续读取相同压缩块时避免产生新的I/O。当压缩数据块已被读入内存后,以下图中读取数据块3,4为例,EROFS的基本数据解压方式大致步骤如下:
1) 根据上层要读取范围计算要解压的数据块(这个例子中是0,1,2,3,4)
2) 分配临时缓存页(可选)存放解压内容(0,1,2),VFS已分配数据页不用再分配
3) 通过vmap将上述物理页映射为连续虚拟页
4) 如果有原地I/O占用了VFS分配的数据页,则将数据拷贝到临时页
5) 解压数据到指定虚拟地址
图 2 EROFS压缩和解压示意图
为优化内存占用,EROFS还提供了缓存解压/滚动解压(预分配一定数量的内存页)、原地解压等策略。另外,通过调度优化和协同解压进一步改善了数据读取性能。理论上,解压的过程增加了CPU计算时间,而压缩数据读取减少了I/O时间(特别是对于顺序读取来说)。所以对于只读压缩文件来说,压缩率达到一定收益后读性能会好于不压缩的文件系统。即CPU时间的增加小于I/O时间的减少,这从EROFS的测试数据也可以看出:当压缩节省空间超过35%以上时,随压缩比提升EROFS的读性能(特别是顺序读)会越来越好于EXT4。
以上就是对只读压缩文件系统的一个简单介绍,可以看出根据应用场景的不同各个只读压缩文件系统在压缩比、压缩/解压效率上各有侧重。EROFS相比其他只读压缩文件系统引入了更多的设计思路,实现细节和一些优化值得肯定。
参考文献:
[1] Gao et. al., EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices, ATC 2019
[2] SquashFS, https://zh.wikipedia.org/wiki/SquashFS
[3] CromFS, https://bisqwit.iki.fi/source/cromfs.html
[4] SquashFS HOWTO, https://tldp.org/HOWTO/SquashFS-HOWTO/whatis.html
[5] CramFS, https://www.kernel.org/doc/html/latest/filesystems/cramfs.html
长按关注内核工匠微信Linux 内核黑科技 | 技术文章 | 精选教程
-
build vue3 后压缩的文件在哪_Vue CLI3 开启gzip压缩文件的方式
2020-12-22 00:21:43gizp压缩是一种http请求优化方式,通过减少...webpack在打包时可以借助 compression webpack plugin 实现gzip压缩,首先需要安装该插件:npm i -D compression-webpack-plugin在vue cli3.0 生成的项目里,可在 vue...gizp压缩是一种http请求优化方式,通过减少文件体积来提高加载速度。html、js、css文件甚至json数据都可以用它压缩,可以减小60%以上的体积。
webpack在打包时可以借助 compression webpack plugin 实现gzip压缩,首先需要安装该插件:
npm i -D compression-webpack-plugin
在vue cli3.0 生成的项目里,可在 vue.config.js 中按照如下方式进行配置:
压缩前后大小大致如下:
生成的压缩文件以.gz为后缀:
一般浏览器都已支持.gz的资源文件,在http请求的Request Headers 中能看到 Accept-Encoding:gzip
要使服务器返回.gz文件,还需要对服务器进行配置,根据Request Headers的Accept-Encoding标签进行鉴别,如果支持gzip就返回.gz文件。
总结
以上所述是小编给大家介绍的Vue CLI3 开启gzip压缩文件的方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
-
java ftp 压缩文件_怎样在java 代码中通过ftp协议实现远程压缩文件 哪位指点一二,小弟不胜感激呀...
2021-02-12 21:18:22你可以通过修改源码支持在传输文件之前,加个压缩功能,这个在我们的项目中就有过调研,调研的结果是已经进行了一定的源码改动做到了,不过我们是在上传完成时做一些操作,你的是在下载时做一些操作,c++的东西主要...这个从理论上讲不是一定不可以实现,而是较难实现,难在于现成的ftp服务器不提供这种功能,可以实现是因为有哪些开源的ftp服务 比如filezilla. 你可以通过修改源码支持在传输文件之前,加个压缩功能,这个在我们的项目中就有过调研,调研的结果是已经进行了一定的源码改动做到了,不过我们是在上传完成时做一些操作,你的是在下载时做一些操作,c++的东西主要是通过一些消息,你请求下载的时候肯定也是由消息的,你可以截获,然后写个压缩程序调用一下。
引用
1.#!/bin/sh //这是shell程序的开头部分,必须地。
2.tar -cvf filter.tar filter/ //解压 filter.tar 到 filter/文件夹下
3.ftp -n<
4.open 10.70.193.33 // 打开10.70.193.33 这个ftp服务地址,就是连接服务。
5.user username password // 使用用户名和密码
6.binary // 传输文件是用二进制的方式。
7.prompt off // 禁用提示 (相当于bat中的@echo off)
8.cd /app/ngapp/data/bak // 进入 /app/ngapp/data/bak 目录
9.mput filter.tar // 将filter.tar 文件上传
10.close // 关闭连接
11.bye // 退出ftp命令行
-
mysql的jar包文件在哪找_如何解压缩 tar.xz 文件
2021-01-05 06:53:39本文最先发布在:如何解压缩 tar.xz 文件 - ITCoderwww.itcoder.techtar命令...XZ 是一个基于 LZMA 算法,用于压缩文件的流行算法。按照惯例,使用 xz 压缩的 tar 包名字都以 .tar.xz 或者 .txz结尾。本文讲解了...本文最先发布在:
如何解压缩 tar.xz 文件 - ITCoderwww.itcoder.techtar
命令允许你创建和解压缩 tar 包。它支持很多压缩算法,例如 gzip, bzip2, lzip, lzop, xz 和 compress。XZ 是一个基于 LZMA 算法,用于压缩文件的流行算法。
按照惯例,使用 xz 压缩的 tar 包名字都以
.tar.xz
或者.txz
结尾。本文讲解了如何使用
tar
命令来解压缩.tar.xz
或者.txz
包。一、解压 tar.xz 文件
tar 工具默认在所有的 Linux 发行版和 macOS 上都已经安装好了。
想要解压一个 tar.xz 文件,使用
tar
命令加上--extract
(-x
)选项,并且在-f
选项后面加上包文件名。tar -xf archive.tar.xz
tar
自动检测压缩类型,并且解压缩包文件。同样的命令可以用来解压缩使用其他算法,例如:.tar.gz 或者.tar.bz2 压缩的文件。如果你不想使用命令行,你可以使用 GUI 文件管理器。 想要解压一个 tar.xz 文件,只需要简单右键点击你想要解压的文件,并且选择"Extract”。Windows 用户需要安装一个名为7zip的工具来解压 tar.xz 文件。
如果想要显示一些输出记录,使用
-v
选项。这个选项告诉tar
文件在终端被解压时,显示压缩包里面的文件名。tar -xvf archive.tar.xz
默认情况下,
tar
解压包文婧内容到当前目录。想要解压包文件到一个指定文件夹,使用--directory
(-C
)。下面的例子显示了如何将压缩包内容,解压到文件夹
/home/linuxize/files
。tar -xf archive.tar.xz -C /home/linuxize/files
二、从 tar.xz 文件中解压指定文件
想要从 tar.xz 文件中解压一个指定的文件,或者多个指定文件,在压缩包名字后面,以空格间隔,列出需要解压出的文件名。
tar -xf archive.tar.xz file1 file2
当解压文件时,你必须提供准确的名字,包括路径。这些路径就像 使用
tar
加上--list
(-t
)选项命令运行打印出的结果一样。从压缩包中解压出一个或者多个文件夹,也和上面解压多个文件一样的:
tar -xf archive.tar.xz dir1 dir2
如果你尝试解压一个在压缩包中不存在的文件,一个类似下面的错误提示将会出现:
tar -xf archive.tar.xz README
输出:
tar: README: Not found in archive tar: Exiting with failure status due to previous errors
--wildcards
选项允许你从一个 tar.xz 文件中基于一个泛名字模式来解压出你需要的文件。这个样式必须使用引号括起来,以免 shell 解释它。例如,只想解压以
.png
结尾的文件,你需要使用:tar -xf archive.tar.xz --wildcards '*.png'
三、从标准输入解压 tar.xz 文件
当解压一个从标准输入(通常是通过管道)读取的压缩 tar.xz 文件,你必须指定一个压缩选项。这个
-J
选项告诉tar
这个文件是使用 xz 来压缩的。在下面的这个例子中,我们使用 wget 命令下载 Linux Kernel,并且通过管道将输出传递给
tar
命令:wget -c https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.3.tar.xz -O - | sudo tar -xj
如果你不指定解压缩选项,
tar
将会提示你应该用哪一个选项:tar: Archive is compressed. Use -J option tar: Error is not recoverable: exiting now
四、列出 tar.xz 文件内容
想要列出 tar.xz 文件内容,使用
--list
(-t
)选项:tar -tf archive.tar.xz
输出将会像下面这样:
file1 file2 file3
如果你添加
--verbose
(-v
)选项,tar
将会打印更多信息,例如拥有者,文件大小,时间戳等等:tar -tvf archive.tar.xz
输出:
-rw-r--r-- linuxize/users 0 2020-02-15 01:19 file1 -rw-r--r-- linuxize/users 0 2020-02-15 01:19 file2 -rw-r--r-- linuxize/users 0 2020-02-15 01:19 file3
五、总结
tar.xz 是一个使用 xz压缩的 tar 包。想要解压 tar.xz 文件,使用
tar -xf
命令,加上压缩包名字即可。如果你有任何疑问,请通过以下方式联系我们:
微信: sn0wdr1am86
微信群: 加上面的微信,备注微信群
QQ: 3217680847
QQ 群: 82695646
-
mysql的jar包文件在哪找_使用Java API进行tar.gz文件及文件夹压缩解压缩
2021-01-03 17:22:39在java(JDK)中我们可以使用ZipOutputStream去创建zip压缩文件,(参考我之前写的文章 使用java API进行zip递归压缩文件夹以及解压 ),也可以使用GZIPOutputStream去创建gzip(gz)压缩文件,但是java中没有一种官方... -
build vue3 后压缩的文件在哪_vue-cli3项目开启gzip压缩
2020-12-30 22:43:08在目前打开网页时,会首先加载各种资源,js、css、图片等等,这时如果这些文件较大的话,打开网页就会比较慢,用户体验不好,有一种需要后端配合的最高级的方法是服务端渲染(SSR),今天我们只分享一下前端单方面优化... -
build vue3 后压缩的文件在哪_vue项目打包自动压缩成zip包教程
2020-12-30 22:43:07在 vue cli2 的项目中 找到 build/build.js,在webpack(webpackConfig, cb) 的 回调函数cb中添加const exec = require('child_process').execexec('cd .\\dist && del dist.zip', function(error) {if ... -
.asp中.cs文件路径在哪_[小技巧]ASP.NET Core中如何预压缩静态文件
2020-12-29 13:00:19在ASP.NET Core中我们可以很容易的启用响应压缩,但是针对预压缩文件,就需要做一些额外的功能了。 这篇博客文章展示了如何在ASP.NET Core中预压缩静态文件。为什么需要预压缩文件?虽然在从服务器请求文件时, ... -
Linux入门学习(十 一)—— 压缩文件的格式?以及怎么怎么操作压缩文件?
2018-05-06 11:10:15...这一章我们来讲我们非常熟悉的一种文件格式。...在我们windows当中压缩文件可以说非常常见的一种文件格式,我们在下载软件、资料、安装包一般来说都是压缩文件的格式。那在我们linux系统当中有哪... -
build vue3 后压缩的文件在哪_Vue - Vue CLI(3): Webpack项目自动打包压缩成 zip 文件
2020-12-30 22:43:09这段时间用 Vue2.0 开发项目,每次打包都会用到 npm run build 命令,但是每次部署...所以索性在执行 npm run build 命令时就直接打包成zip文件,方便省事!1、插件装备webpack插件:filemanager-webpack-plugin,该... -
build vue3 后压缩的文件在哪_vue-cli3添加环境变量后,打包文件没有压缩?
2020-12-30 22:43:091: 在package.json中添加prod模式,作为生产环境打包,如下"scripts": {"dev": "vue-cli-service serve","build": "vue-cli-service build","prod": "vue-cli-service build --mode prod"}2:添加.env.prod文件NODE_... -
哪款压缩软件能把文件缩小3倍_如何压缩PDF文件,不知道你就亏了~
2020-11-04 19:08:26原标题:如何压缩PDF文件,不知道你就亏了~在我们日常学习和日常工作中,pdf...工具/原料方法/步骤方法一:风云文件压缩PDF文件的使用越来越多,今天给大家介绍的这款风云文件压缩软件是我一直在使用的,效果很好。2... -
java解压到哪_如何在Java中更快地解压缩XZ文件?
2021-03-15 16:09:57我的SQLite db文件大小为85MB,使用XZ格式压缩,其大小已减少到16MB.我使用以下代码(和XZ for Java提供的JAR)在Android Jelly Bean中解压缩它:try {FileInputStream fin = new FileInputStream(path + "myFile.xz");... -
怎样在java 代码中通过ftp协议实现远程压缩文件 哪位指点一二,小弟不胜感激呀
2011-11-26 11:51:48具体情况是这样的: 服务器端... 考虑到xml文件压缩后会少的很多,就想在下载前将其压缩, 问题就在 怎样在客户端通过ftp协议将服务器端的xml文件压缩呢? 现在用的是commons-net 链接的 各位朋友都说说有啥好的解决方案莫 -
build vue3 后压缩的文件在哪_Vue3+Electron整合方式
2020-12-31 09:02:10当时的方法后来发现了一个问题,就是打包后的应用拿到其他机子上没法用,原因在于index.html的地址是个... 在查阅了许多资料后发现之前将二者结合的方法不是很有效(开发和生产环境不一致等),正好Vue3也进入beta阶段... -
build vue3 后压缩的文件在哪_Vue CLI 3.0 配置build之后的目录结构
2020-12-22 00:22:31首先需要自己在项目根目录增加配置文件:vue.config.js主要可能是这个选项比较值得注意: assetsDir: "static",分享一下我的配置文件(MacOS):module.exports = {// 基本路径baseUrl: "/",// 输出文件目录outputDir:... -
build vue3 后压缩的文件在哪_vue-cli脚手架之build文件夹三
2021-01-26 17:46:52require(‘./utils‘)//导入utils.jsconst webpack = require(‘webpack‘)//使用webpack来使用webpack内置插件const config = require(‘../config‘)//config文件夹下index.js文件const merge = re... -
build vue3 后压缩的文件在哪_Vue3和TypeScript重构WebSocket插件
2020-12-31 12:03:29test 单元测试文件 .eslintrc.json 项目的eslint配置 .gitignore 上传至git仓库需要忽略的文件 .nvmrc 指定项目期望用的node版本 .travis.yml 自动化构建配置文件 CHANGELOG.md 版本发布记录文件 npm-shrinkwrap.... -
电脑rar文件打开方式_哪种压缩格式最好?文件压缩格式rar、zip、7z有什么区别?...
2020-10-20 03:08:55虽然我们经常使用压缩文件,但不一定真正了解,数据压缩的原理和不同压缩文件格式的区别。一、压缩原理压缩分为“有损压缩”和“无损压缩”。有损压缩就是直接对文件进行压缩,删除不重要的数据,一般用于音乐、视频... -
build vue3 后压缩的文件在哪_手写实现vue3响应式原理之proxy
2020-12-19 11:15:22相对于vue2的响应式来说,vue3的响应式不管从哪方面来说,都是有很大的提升。了解vue3响应式我们可以在github里去下载一个vue-next,这是vue3的响应式的模块。monorepomonorepo是一种将多个packpage放在一个repo中的... -
build vue3 后压缩的文件在哪_Vue 3学习:4. 集成vuex
2020-12-12 05:33:52安装Vuex安装完成后在package.json中查看vuex的版本{ "name": "vue3-meteor", "version": "0.0.0", "scripts": { "dev": "vite", "build": "vite build" }, "dependencies": { "vue": "^3.0.2", "vue-router": "^... -
build vue3 后压缩的文件在哪_使用Vue3+TS重构百星websocket插件
2020-12-30 06:20:57test 单元测试文件 .eslintrc.json 项目的eslint配置 .gitignore 上传至git仓库需要忽略的文件 .nvmrc 指定项目期望用的node版本 .travis.yml 自动化构建配置文件 CHANGELOG.md 版本发布记录文件 npm-shrinkwrap.... -
哪款压缩软件能把文件缩小3倍_有哪些好用的在线视频压缩软件
2020-11-13 18:02:52当今社会,每个人在工作中都经常会遇到视频压缩的问题和需求,微信、QQ等社交软件对于视频传输有大小限制,源文件太大上传邮件要花费很长时间,硬盘拷贝不易携带还不能及时传送......很多人遇到此类问题,都寄希望于... -
哪款压缩软件能把文件缩小3倍_7-Zip vs WinRar vs WinZIP:选择适合的文件压缩工具...
2020-10-20 23:47:14由于数据量日益增加,存储技术没有齐头并进,因此,文件压缩已成为当今存储数据的重要...在我们深入研究文件压缩软件及优缺点之前,简要介绍一下不同的压缩格式。以下是几种常用的流行文件压缩格式:RAR——流行的... -
macos系统 打不开压缩文件_优雅地(划掉)在macOS上压缩RAR文件
2021-01-26 22:28:28忘了在哪听说的了,一个优秀的程序员,如果他做的任务需要重复三次以上时,那么他就应该用代码去完成。(原话肯定没我说的这么拉胯233333)于是就想趁着今天写点能用程序简化工作的方法。学校的程序设... -
build vue3 后压缩的文件在哪_使用 Vue3 和 TypeScript 重构740+ Star WebSocket 插件
2020-12-30 06:20:53test 单元测试文件 .eslintrc.json 项目的eslint配置 .gitignore 上传至git仓库需要忽略的文件 .nvmrc 指定项目期望用的node版本 .travis.yml 自动化构建配置文件 CHANGELOG.md 版本发布记录文件 npm-shrinkwrap.... -
build vue3 后压缩的文件在哪_带你了解 vuenext(Vue 3.0)之 小试牛刀
2020-12-30 16:13:08举例来说,当一个组件中使用了多个 mixin 的时候,光看模版会很难分清一个属性到底是来自哪一个 mixin。 HOC 也有类似的问题。 命名空间冲突。由不同开发者开发的 mixin 无法保证不会正好用到一样的属性或是... -
build vue3 后压缩的文件在哪_Vue3项目从零开始建造项目及插件的使用
2020-12-31 19:10:48home.vue文件 Home user.vue文件 User 5.3、在src中创建router文件夹,并创建index.js文件 import { createRouter, createWebHashHistory} from 'vue-router'const Home = ()=> import('./../views/home.vue')const...