• 记一次网页加载优化


    1.因为官网图片太多,服务器带宽又不够,导致网页加载很慢。20几秒

    打算把图片放到七牛云,发现七牛云需要域名备案,(后面七牛云回访说可以提交工单申请国外的对象存储不用备案。)

    后面决定放到腾讯云的cos上,有提供域名。有活动50g存储空间,6个月免费,流量不算免费。

    2.静态图片,直接上传到腾讯云的cos即可,还可以开通cdn加速。

    nginx加上这个配制,把所有静态图片地址都重定向到,cdn的加速地址。(不用一个个去改静态图片的路径,图片路径要一致)

     location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
        {
            #expires      30d;
               #error_log off;
            #access_log /dev/null;
            rewrite "^/dist/img/(.*)$" http://xxxx-1255425835.file.myqcloud.com/img/$1;
        }

    3.后台上传图片,使用th5.0框架。直接按照助腾讯提供的PHPSDK的文档进行操作。

    通过composer安装sdk。

     安装好后在vendor文件夹中出现qlcoud文件夹则说明安装成功。

    在控制器中无需引入(th5.0已经帮你引入了),直接按照文档案例进行调用即可。(https://cloud.tencent.com/document/product/436/12266

    4.

     依照平时上传图片的方式,获取路径上传到腾讯云cos即可。

     上传成功的返回,$res['Location']即可获取cos的图片路径。

    5.vue打包优化

    打包后的chunk-vendors.js(引入的第三方插件)很大,影响加载。

    5.1 路由使用懒加载。当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了

     5.2.安装compression-webpack-plugin插件。前端将文件打包成.gz文件,然后通过nginx的配置,让浏览器直接解析.gz文件,可以大大提升文件加载的速度。

    npm install --save-dev compression-webpack-plugin

    修改vue.config.js配制

    // 用来配制@引入路径的
    const path = require("path");
    function resolve(dir) {
      return path.join(__dirname, dir);
    }
    const webpack = require('webpack')
    const CompressionWebpackPlugin = require('compression-webpack-plugin')
    const productionGzipExtensions = ['js', 'css']
    // 用来配制@引入路径的end
    module.exports = {
      lintOnSave: false,
      publicPath: "./",//打包文件路径为相对路径
      //webpack配置
      configureWebpack: {
        //关闭 webpack 的性能提示
        // performance: {
        //   hints: false
        // },
        //或者
        //警告 webpack 的性能提示
        performance: {
          hints: 'warning',
          //入口起点的最大体积
          maxEntrypointSize: 500000000,
          //生成文件的最大体积
          maxAssetSize: 300000000,
          //只给出 js 文件的性能提示
          assetFilter: function (assetFilename) {
            return assetFilename.endsWith('.js');
          }
        },
        plugins: [
          // new webpack.IgnorePlugin(/^./locale$/, /moment$/),
          
          // 下面是下载的插件的配置
          new CompressionWebpackPlugin({
            algorithm: 'gzip',
            test: new RegExp('\.(' + productionGzipExtensions.join('|') + ')$'),
            threshold: 10240,
            minRatio: 0.8
          }),
          new webpack.optimize.LimitChunkCountPlugin({
            maxChunks: 5, 
            minChunkSize: 100
          })
        ]
      },
      css:{extract:false,sourceMap:false}, //解决的打包后样式冲突问题
      // 用来配制文件@引入路径的
      chainWebpack: config => {
        config.resolve.alias
          .set("@", resolve("src")) //@默认也是这个
          // .set("assets", resolve("src/assets"))
          // .set("components", resolve("src/components"))
          // .set("base", resolve("baseConfig"))
          // .set("public", resolve("public"));
      },
    
    }

    5.3配制nginx(效果不明显,待考究)

    server{
      gzip_static on; //会读取我们我们压缩好的.gz文件,(不确定)
      
      
      // 主动帮我们压缩(不确定) gzip on; gzip_min_length 1k; gzip_comp_level
    9; //越大压缩等级越高 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; //需要压缩的文件 gzip_vary on; gzip_disable "MSIE [1-6]."; }

    6.后面直接把打包后的js文件,也丢到腾讯去的cos上去,再使用cdn加速。基本几百毫秒就加载完成了。

    oss与cdn的区别与联系。(阿里叫oss,腾讯叫cos都是对象存储)

     oss来来存放静态资源比如图片啊js文件啊.html啊视频之类的.. cdn用来将oss里面的文件进行分发..oss里面的文件会缓存到cdn的节点上 用户就近访问.

    7,也可以把vue.vuex.axios都丢到cdn上,使用cdn引入的方式,优化加载时长。第三方插件最好按需引入。

    8.打包后的.map文件(可以在配制中去掉)

    “.map”文件的作用:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。 
    有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。

    JS   详细X
    基本翻译
    abbr. 射流研究
    abbr. JavaScript 的缩写,一种直译式脚本语言
    网络释义
    JS: 聚合物水泥
    JS Setogiri: 濑户雾号
    AUPRES JS: 欧珀莱俊士

  • 相关阅读:
    让思考成为一种习惯:今年,我大四了
    asp.net core源码飘香:Logging组件
    asp.net core源码飘香:Options组件
    asp.net core源码飘香:Configuration组件
    asp.net core源码飘香:从Hosting开始
    webpack code split实现原理
    css specificity
    todo:read
    React Render Props 模式
    recompose mapProps 函数指南
  • 原文地址:https://www.cnblogs.com/ygyy/p/13570391.html
Copyright © 2020-2023  润新知