网站稍微优化了一番,速度稍许提升


先来这全景照片,这是月初在西宁附近的村庄拍摄的,金黄色的油菜花海蔚为壮观。

上一篇博文中加载的比较多图片和大文件资源,尤其是加载近3.5Mb的两款字体文件,网站速度明显慢了很多,服务器是4Mbps的带宽,加载这些资源确实有点费劲,于是想着怎么优化一下。

首先优化的是图片文件,我将博客的图片同步到static.yefengs.com,同步方式采用的是“当访问static.yefengs.com/wp-content/upload/abc.jpg”时,nginx发现static.yefengs.com域名上没有这个abc的文件,那么nginx将请求交给php,php访问yefengs.com/wp-content/upload/abc.jpg文件,并拉取下来,判断如果是jpg文件那么把jpg转完成webp格式文件,同时保持文件扩文件和路径一致,保存到static.yefengs.com服务器上。

以上的功能类似于一个简单的cdn的功能,这样的方式,原始的文件abc.jpg在yefengs.com上存储,通过首次访问,在static.yefengs.com同步转换存储了webp格式的文件,访问的时候访问wepb的图片,请看下图对比,jpg转webp格式的体积区别。
效果比较明显

当然static.yefengs.com的服务器的速度当然选择比较快点的服务器,目前这台static服务器的带宽为6Mbps,感觉够用,就当部署这玩玩,如果仅仅是将jpg转换为webp,可同时部署到一台服务器上。

实现代码如下:
proxy.php文件放置在更目录,起代码如下(注意修改远程服务器基础URL地址)

想贴大段代码,发现排版混乱,即使使用 pre 标签来包裹,还是有问题,那么直接压缩包吧!

点击这里proxy.php.zip下载源码吧!替换掉里面的域名即可。

配置完proxy.php后配置nginx的伪静态文件,将下述配置添加到nginx的伪静态目录里,注意nginx里要去掉有关jpeg和js及其他文件的缓存配置信息,不然不生效

#    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
#    {
#        expires      30d;
#        error_log /dev/null;
#        access_log /dev/null;
#    }
#
#    location ~ .*\.(js|css)?$
#    {
#        expires      12h;
#        error_log /dev/null;
#        access_log /dev/null;
#    }

同时添加配置

# 允许指定的域名跨域访问
add_header Access-Control-Allow-Origin "https://yefengs.com";

# 允许的请求方法
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE";

# 允许的请求头
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization";

# 允许携带凭证(如 cookies)
add_header Access-Control-Allow-Credentials "true";

# 预检查请求的缓存时间(秒)
add_header Access-Control-Max-Age 86400;

# 尝试直接访问文件,如果不存在则交给PHP处理
location ~ .*\.(gif|jpg|jpeg|png|mp3|js|css|webp|woff|woff2|mp4)$
{
    expires      30d;
    try_files $uri $uri/ /proxy.php?$query_string;
}

最后替换wordpress图片的路径(网上搜索有关wordpress替换图片域名的内容)和设置中“文件的完整 URL 地址”路径为“https://static.yefengs.com/wp-content/uploads”。

至此,已经完成了网站稍许的优化,代码是临时学习写的,可能存在bug,欢迎留言讨论和改进。

壹拾捌条评论

评论

  • 全局变量来自中国回复

    西宁这山坡上看起来感觉一棵树都没有啊?我们这边山里那参天大树遮天蔽日黑漆漆的。

    • 夜枫's:

      @全局变量相较于 十几年前,现在的树已经非常多了,之前是光秃秃的,草都没有,西宁典型的高原地貌。

      回复
  • LMS来自美国回复

    手机下页面被代码撑破了。

  • 夜未央来自陕西回复

    懂技术就是好,可以随心所欲的折腾。

    • 夜枫's:

      @夜未央哈哈哈,就一点三脚猫的功夫,只会最简单的。

      回复
  • 信息发布来自江苏回复

    会不会影响蜘蛛抓取

    • 夜枫's:

      @信息发布其实个人生活类博客,有无爬虫,都无所谓哈~不需要流量,流量大了倒是烦恼。

      回复
  • 瓦匠来自福建回复

    这个全景是真帅(ps: 代码块部分没有换行超宽了)

  • 刘郎来自贵州回复

    这个顶图挺漂亮的 蓝蓝的天空 看着心情好了很多

    • 夜枫's:

      @刘郎就是呢,出去转转,亲近自然也很美的。

      回复
  • 粽叶加米来自广东回复

    拍的真好,景色也非常美,翻看了之前的,这是每张都能当壁纸呀。服务器4Mbps,对于摄影爱好者图多的,有的吃紧呀。

    • 夜枫's:

      @粽叶加米主要是景色美,咋拍都好看呢。博客水管有点小,目前也就基本够用哈~

      回复
  • Tokin来自上海回复

    直接套个七牛,用七牛的镜像加速跟你这个原理是一样的(反代你的博客然后把你的静态文件缓存到七牛),再用imageView2免费的图片处理,把图片处理成webp。流量不多的话每个月一两块钱吧

    • 夜枫's:

      @Tokin哈哈,就是呢,主要是空着一个轻量主机,就试试能不能实现功能,还真实现了,看后期的话搞搞收费的 CDN,网站速度应该能起飞。

      回复
  • 灰常记忆来自陕西回复

    我是直接压缩为WEBP

  • acevs来自山东回复

    全景照片效果不错。速度也不错。