Imagemin还不足以获得谷歌网页速度洞察力吗?

时间:2017-04-26 11:21:21

标签: gulp google-pagespeed imagemin jpegtran

我正在使用gulp-imagemin一段时间,但几个月前我注意到谷歌页面速度不满意我的压缩图像。我尝试了所有设置组合但没有结果。还尝试了imagemin-cli和直接jpegtran - 所有相同,在大图像上它提供2-5%压缩,tinyfy提供50%。当我使用一些云优化器(镀锡)时,它会给出正确的压缩。

我目前的gulp任务如下:

gulp.task('imagemin', function() {
        return gulp.src(input_files)
            .pipe(newer(output_path))
            .pipe(imagemin([
                imagemin.gifsicle({interlaced: true}),
                imagemin.jpegtran({progressive: true}),
                imagemin.optipng({optimizationLevel: 7}),
                imagemin.svgo({plugins: [{removeViewBox: true}]})
            ],{verbose:true}).on('error', gutil.log))
            .pipe(gulp.dest(output_path));
});

2 个答案:

答案 0 :(得分:2)

我使用https://www.npmjs.com/package/imagemin-jpeg-recompress解决了它,也可以在Gulp中使用。

我在我的情况下使用ES2015和Gulp 4,任务回调驻留在他们自己的文件中,但你应该通过查看我的代码来理解这个想法:

'use strict';

import config from '../config';
import gulp from 'gulp';
import imagemin from 'gulp-imagemin';
import imageminJpegRecompress from 'imagemin-jpeg-recompress';

export default function() {
  return gulp.src([config.jekyll.imagedir + config.glob.deep.image])
    .pipe(imagemin([
      imagemin.gifsicle({interlaced: true}),
      imageminJpegRecompress({progressive: true, method: 'smallfry', quality: 'veryhigh'}),
      imagemin.optipng(),
      imagemin.svgo({plugins: [{cleanupIDs: false}]})
    ], {verbose: true}))
    .pipe(gulp.dest(config.jekyll.imagedir));
};

但请注意,这意味着使用有损算法压缩JPEG文件,而https://github.com/imagemin/imagemin-jpegtran(默认情况下在gulp-imagemin中使用)仅进行无损转换。

答案 1 :(得分:2)

我能得到的最好(我想无损):

const imageminMozJpeg = require(config.nm + 'imagemin-mozjpeg');
const imageminPngQuant = require(config.nm + 'imagemin-pngquant');
gulp.task('imagemin', function() {
    return gulp.src(input_files)
        .pipe(newer(output_path))
        .pipe(imagemin([
            imagemin.gifsicle({interlaced: true}),
            imageminMozJpeg(),
            imageminPngQuant({quality:'85-100'}),
            imagemin.svgo({plugins: [{removeViewBox: true}]})
        ]))
        .pipe(gulp.dest(output_path));
});

谷歌对响应式图片仍然不满意,当实际尺寸大于某些谷歌页面显示尺寸时速度分辨率= /