摘要:前段时间,在解决一则网站图片上传失败引起CDN加速503错误的故障时,发现和媒体库中图片尺寸过大,打开加载时间过长有关。

前段时间,在解决一则网站图片上传失败引起CDN加速503错误的故障时,发现和媒体库中图片尺寸过大,打开加载时间过长有关。

而且由于是多用户模式的,许多新的投稿用户在添加图片时,有两个问题非常突出,一是图片的文件名是中文,上传下载或迁移过程中,会造成乱码而产生错误;二是图片上传时没有经过压缩,尺寸过大,有些竟然有6M,不仅占用空间,还影响了打开速度。

对于第一个问题,我的思路是在 WordPress 上传图片时,系统自动给予重命名,根据上传时间命名,用数字代替中文,以实现能正常显示使用。

举例说明:如2019022012282866.xxx,表示2019年2月20日12时28分28秒上传的,最后两位数字66是10到99之间的随机数,xxx表示文件原本的类型后缀。

实现方法:将以下代码添加到所使用主题的 functions.php 文件中最后一个?>的前面即可。

//wordpress上传文件重命名
add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' );
function custom_upload_filter( $file ){
    $info = pathinfo($file['name']);
    $ext = $info['extension'];
    $filedate = date('YmdHis').rand(10,99);
    $file['name'] = $filedate.'.'.$ext;
    return $file;
}

具体的效果见下图,此方法采自苏醒博客,他还提供了一种“文件名md5转码为32位字符串”的重命名方式,我觉得不直观,还是根据上传时间命名好。


根据上传时间重命名文件

对于第二个问题,目前有两个思路,一是图片上传前先进行压缩,减小图片尺寸,网站上展示的图片,最大像素建议不超过1024×768,通常800×600足够了;二是图片上传后进行压缩,用小尺寸图片替代原来的大尺寸图片,这就需要图片具有这个功能。

看到网上推荐使用 Compress JPEG & PNG images 插件来自动完成图片压缩工作,以优化图片加载速度。


Compress JPEG & PNG images 插件

在网站后台通过搜索 Compress JPEG & PNG images 添加插件,或在 WordPress 官网上下载安装,启用后的设置也比较简单,可参照下图:1、新图片上传:在后台压缩新图像(推荐);2、图片尺寸:原始图像(由压缩图像覆盖);3、原始图片:调整原始图像的大小为最大宽度800×最大高度600。


Compress JPEG & PNG images 插件参数设置

Compress JPEG & PNG images 插件由 TinyPNG 发布,它每个月可免费压缩500张图片,你可在后台看到使用的次数。

TinyPNG 还提供了在线压缩工具 https://tinypng.com/ ,压缩比例大,质量损伤小,推荐大家使用。当插件后台压缩免费次数用完的时候,这是个最佳的选择。

历史上的今天: