内联svg vs svg Sprite vs多个外部文件 替代:创建 SVG客户端

好的,所以我主要使用Laravel&Vue js构建一个Web应用程序。我尝试使用https://github.com/JetBrains/svg-sprite-loader#installation,但导出的svg显示为空白。

在这种情况下,我开始怀疑这是否真的值得,我不确定。

所以我的问题是,到底有什么区别?

假设我们不能使用图标字体,因为我们想要彩色的svg。

  • 是否甚至值得尝试使用一个软件包将svgs合并到一个精灵中,然后使用它,或者它与http / 2并没有真正的区别?

  • 考虑文件大小和数据使用情况,是否值得尝试使用sprite而不是多个外部svg文件来最小化此方面?

  • 对svg进行内联也是一种选择,但这会大大增加dom的大小。

所以我不禁要问……有没有人尝试过所有这些技术,并且找出了最佳,性能最高的技术,以及它们的真正区别是什么?

最后,如果有人给我一些关于为什么我的svg精灵显示空白的信息,那将是巨大的好处:P

我已经在webpack.mix中配置了上述软件包,如下所示:

const mix = require('laravel-mix');
const SpriteLoaderPlugin = require('svg-sprite-loader/plugin');

mix.js('resources/js/app.js','public/js')
    .sass('resources/sass/app.scss','public/css')
    .webpackConfig({
        module: {
            rules: [
                {
                    test: /resources\/images\/.*\.svg$/,loader: 'svg-sprite-loader',exclude: /node_modules/,options: {
                        extract: true,spriteFilename: 'icons-sprite.svg',publicPath: 'images/sprites/',}
                }
            ]
        },plugins: [
            new SpriteLoaderPlugin({ plainSprite: true}) // Sprites Plugin.
        ],})
    .version()

wxfjf200806 回答:内联svg vs svg Sprite vs多个外部文件 替代:创建 SVG客户端

甚至值得尝试使用一个程序包将svgs合并到一个精灵中然后使用它,还是真的与http / 2无关?

这很重要,但是取决于您的用例。您必须自己在生产环境中进行测试。当然,HTTP / 2总是更好

考虑到文件大小和数据使用情况,是否值得尝试使用精灵而不是多个外部svg文件来最小化这一方面?

答案与1 ..用例相同。归结为估计(因为您无法计算),浏览器A需要等待多长时间。

GZip是数据使用的最重要因素。

在缓慢的3G连接上,为(大)文件添加您自己的LZMA压缩 可能会很有趣。

对svgs进行内联也是一种选择,但这会大大增加dom的大小。

由于GZip处理一个文件中的所有内容,因此您仍然只在另一个文件中发送相同的字节可能会更好。

总的来说,我的建议是不要担心性能。这不是OR-OR决定。

从单独的文件开始,仅在遇到性能问题时重新构建。
如果您期望性能问题,也许在开发时会考虑到重构。

替代:创建 SVG客户端

我又走了一步。成为一个实验,我可以走多小/快:

  • 将所有SVG改制成字符串表示法<circle cx='20' cy='20' r='5'/>变为c:20,20,5
  • 在一个JS文件中使用
  • 解析字符串客户端
  • 创建SVG
  • 用于DataURI IMG src

52个SVG文件中的 550 KB 降至一个自定义元素文件中的 16 KB

GZip是一个重要因素!

GZip在将服务器端文件发送到客户端之前先对其进行压缩。

是的,缩小很重要,但是缩小可以对GZip压缩产生负面影响。

很久以前的好读物

https://encode.su/threads/1889-gzthermal-pseudo-thermal-view-of-Gzip-Deflate-compression-efficiency

它说明了<!DOCTYPE HTML>不好而<!doctype html>很好的原因。

同样适用于SVG文件:<circle ...<CIRCLE ...更好

<circle fill='...' cx='20' .../><circle cx='20' ... fill='...'/>

因为GZip发现更长的重复模式<circle fill='

本文链接:https://www.f2er.com/2369514.html

大家都在问