美文网首页
Vuepress 使用 CDN 优化 gh-pages 加载速度

Vuepress 使用 CDN 优化 gh-pages 加载速度

作者: 我爱盐酥鸡 | 来源:发表于2020-07-16 19:52 被阅读0次

众所周知,github 在国内访问极不稳定,有时候加载速度极慢,导致国内用户体验极差。
我的 Vuepress 博客网站刚好是托管在 gh-pages 上,所以就想优化访问速度,让页面更加顺滑。

优化方案

下面优化博客加载速度的一些方案:

  • 优化打包代码文件大小
  • 压缩加载资源文件大小
  • 减少 http 请求次数
  • 采用 cdn 加速

因为 Vuepress 是静态博客,而且 Vuepress 本身会优化打包代码文件大小,所以现在方向是压缩图片等资源文件大小,并且使用 cdn 加速。

使用 CDN 加速

免费的 jsDelivr CDN 天然支持 Github 仓库的加速,那么如何使用呢?

以我的博客仓库为例,仓库地址是 https://github.com/jwchan1996/blog
其中,仓库资源可以通过 https://cdn.jsdelivr.net/gh/jwchan1996/blog + 仓库文件路径 直接访问。

比如:https://cdn.jsdelivr.net/gh/jwchan1996/blog/README.md

默认是访问 master 分支下的资源,如果需要访问其他分支的资源,需要指定分支:

# master分支
https://cdn.jsdelivr.net/gh/jwchan1996/blog@master/README.md

# gh-pages分支
https://cdn.jsdelivr.net/gh/jwchan1996/blog@gh-pages/logo.png

配置 Vuepress

下面分别是 Vuepress 编译前的博客源码与编译后的目录截图:

master 分支

master

gh-pages 分支

gh-pages

我们的目的是部署博客代码到 gh-pages 的时候使用 cdn 资源路径,而本地开发依然采用本地路径。

那么,如何配置呢?

找到 config.js 配置文件的 configureWebpack 配置:

module.exports = {
  title: '飘香豆腐的博客',
  …
  …
  configureWebpack: {
    
  }
}

其中 configureWebpack 是用于修改 Vuepress 内部的 Webpack 配置的,可以是一个对象,也可以是一个函数,然后返回一个对象。

因为我们需要做环境判断是开发环境还是生产环境,所以我们使用函数配置。

const path = require('path')

module.exports = {
  …
  …
  configureWebpack: () => {
    const NODE_ENV = process.env.NODE_ENV
    //判断是否是生产环境
    if(NODE_ENV === 'production'){
      return {
        output: {
          publicPath: 'https://cdn.jsdelivr.net/gh/jwchan1996/blog@gh-pages/'
        },
        resolve: {
          //配置路径别名
          alias: {
            'public': path.resolve(__dirname, './public') 
          }
        }
      }
    }else{
      return {
        resolve: {
          //配置路径别名
          alias: {
            'public': path.resolve(__dirname, './public') 
          }
        }
      }
    }
  }
}

此时我们 markdown 文件里面图片路径还是这样的:

![gitlab 503](/docker/docker_gitlab_restore/02.png)

这样编译出来的的 html 文件图片路径依然是 /docker/docker_gitlab_restore/02.png,因为没有识别图片为 Webpack 模块,所以没有添加任何路径前缀。

要想添加前缀,修改 markdown 文件图片地址即可,添加 Webpack 配置好的路径别名前缀:

![gitlab 503](~public/docker/docker_gitlab_restore/02.png)

这样所有 markdown 文件的图片都会被打包到 assets 目录下,如 /assets/img/02.706d49fc.png

同时 html 文件的图片路径也会加上配置的 publicPath 前缀:

# 打包后的CDN地址
https://cdn.jsdelivr.net/gh/jwchan1996/blog@gh-pages/assets/img/02.706d49fc.png
# 打包后的html文件图片标签
<img src="https://cdn.jsdelivr.net/gh/jwchan1996/blog@gh-pages/assets/img/02.706d49fc.png" alt="gitlab 503">

到此 Vuepress 的配置就完成了,将代码 pushgithub 仓库,等待自动化部署后,可以发现访问速度明显地提升了许多,顺滑许多!

具体访问体验可参考 https://jwchan.cn

相关文章

  • Vuepress 使用 CDN 优化 gh-pages 加载速度

    众所周知,github 在国内访问极不稳定,有时候加载速度极慢,导致国内用户体验极差。我的 Vuepress 博客...

  • 如何优化网站的加载速度

    优化网站加载速度方式分类 减少http请求 提升http加载速度使用CDN 内容分发网络TCP/IP 、HTTP优...

  • 使用jsDeliver+github搭建免费的cdn

    前言:国内加载github的资源比较慢,需要使用CDN加速来优化网站打开速度,于是使用jsDeliver+gith...

  • 前端面试

    优化问题 加载优化压缩 合并 减少请求 缓存 无阻塞(script放到后面)预加载 fontIcon 使用cdn...

  • HTML页面加载速度优化

    页面加载速度优化主要有6点:[1] 减少请求数量,合并请求 减少请求文件的体积 使用内容分发网络(cdn) 合理使...

  • 前端面试问题记录一

    1.如何优化单页面优化应用加载慢的问题? 1.使用CDN2.路由懒加载3.Gzip压缩 2.$router.pus...

  • vue cli3使用CDN资源优化加载速度

    通常我们需要优化加载速度的时候,在众多的优化当中,可以使用link代替import,避免过多的import让加载变...

  • 前端性能优化

    优化项目加载速度,首屏渲染速度。 html优化使用 声明减少嵌套层级减少不必要的Dom元素标签...

  • 前端面试题

    单页应用首页加载慢的问题有什么方法优化? 链接 1. 使用CDN资源,减小服务器带宽压力 2. 路由懒加载...

  • webpack插件篇-build产物上传cdn

    1、需求背景 为了优化代码下载速度,我们使用cdn的方式,故需要将打包产物上传至cdn。 注意点 只有生产环境才上...

网友评论

      本文标题:Vuepress 使用 CDN 优化 gh-pages 加载速度

      本文链接:https://www.haomeiwen.com/subject/ydpmhktx.html