欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

本文由shirishiyue发表于云+社区专栏

目前我这边的web页面,都是采用php+smarty模板生成的,是一种比较早期的开发模式。好处是没有现阶段常用的前后端分离出现的首屏问题,因为其本身就是服务器渲染,坏处是代码分离不好做,公用化及组件化不好做。这里涉及前后端分离相关问题,老生常谈,这里暂不讨论。

​ 近期,在做一些前端分离的尝试。采用国内非常流行的的vue框架,选这个框架而不是react的原因主要是vue的mvvm保留html书写惯性,对于html里写代码多的人来说更容易入手。而且流行框架vue也经过了极大量的测试验证,参考资料充实详尽,可靠性和易用性都满足条件,没有理由不尝试一下。

​ 总的来说,做了一个如下小应用demo,长下面这样,三个简单页面,分页查看所有王者英雄,或者所有装备。分别采用 php+smarty,vue-cli,vue+ssr,三种方式进行开发,完了再对结果做一下对比。

​ 三个版本的体验入口如下(尽量用手机浏览器扫描,微信对ip域名有特殊处理),

​ 三个版本并没有严格做相同环境处理,所以下面的对比分析仅作为直观上的对比了解,并不适用于详细性能上的严格对比额。

​ 对三个页面分别进行webpage test,测试结果如下,

▲ 详细结果

​ php版:

https://www.webpagetest.org/result/181108_2D_20fc46a11de58d60dde7421b6d3be954/

​ vue ssr 服务器渲染版:

https://www.webpagetest.org/result/181108_XY_92f54bd829b1b6f02634774294491736/

​ vue-cli 静态版:

https://www.webpagetest.org/result/181108_4G_011f6c33da1e7f199f8a1ecd03ef0728/

▲ 综合参数

1、页面加载时间。理所当然是纯静态的vue-cli最快。vue ssr 和 php 版差不多(忽略上面的php版,因为php版有一些额外资源要加载)。

2、首字节时间。静态的最快。若扣除dns时间,其实php和vue-ssr版差不多。(注:php版和vue ssr版不是部署在同一台机器上,php版机器性能要强一些,多核,vue-ssr版机器比较弱单cpu单核)

3、渲染时间和页面呈现熟读指数,vue ssr版比php版本稍微慢一点。这是因为,php的html到页面后直接就呈现了,而vue ssr到client后,有一个vue框架的渲染过程。

▲ 加载瀑布流

​ 从加载流的角度上看一下三者的区别,

php版本

vue ssr 服务器渲染版本

vue-cli静态版本

​ 从瀑布流上可以看出很多三种页面执行方式的区别,列举一部分如下:

1、php 版以及 vue-ssr 版 有较长的服务器处理时间,,,对应的首字节时间明显高于没有服务器处理的vue-cli静态页面。

2、由于服务器版本的php或者vue-ssr的首屏数据都已经生成了,所以页面不会再次请求接口,少了数据的请求过程。而vue-cli版有一个较长的数据请求过程。

3、vue-cli静态页面的dom content time 或者 document complete time 明显最短,原因是模板html几乎没什么内容。

4、webpack打包拆离出来的独立js或者css文件,其实在同一域名下,由于浏览器同一域名可以并行6个tcp,以及http的keep-alive性质,其实总的下载时间不多。对比看,跟阻塞的dns时间差不多。

5、三种页面 Start Renderer Time 分别是 1.2s,1.3s,2.0s。 vue-cli静态页面生成的白屏时间中,大部分是首屏数据请求消耗的时间,,同时也可以对比出,服务器渲染的对首屏时间的确有很明显的效果。

▲ 直观体验

​ 时间,,平均速度指数Speed Index,分别是1.2,,,1.3,,,2.0s,,,可以观察下面的对比视频体验。

​ >点此观看动态视频<

相关阅读
【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识

此文已由作者授权腾讯云+社区发布,更多原文请点击

搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!

海量技术实践经验,尽在云加社区

php,vue,vue-ssr 做出来的页面有什么区别?的更多相关文章

  1. Vue.js实现一个SPA登录页面的过程

    技术栈 vue.js 主框架 vuex 状态管理 vue-router 路由管理 一般过程 在一般的登录过程中,一种前端方案是: 检查状态:进入页面时或者路由变化时检查是否有登录状态(保存在cooki ...

  2. Vue.js写一个SPA登录页面的过程

    技术栈 vue.js 主框架 vuex 状态管理 vue-router 路由管理 一般过程 在一般的登录过程中,一种前端方案是: 检查状态:进入页面时或者路由变化时检查是否有登录状态(保存在cooki ...

  3. 基于laravel5.4 vue 和vue-element搭建的单页面后台CMS

    介绍 该项目后台是基于vue和laravel搭建的单页面CMS系统,包含了文章管理,权限管理,用户管理等基本模块. 前台使用了传统web技术,laravel渲染搭建了个博客系统 github地址:ht ...

  4. vue中数据接收成功,页面渲染失败

    1.vue中数据接收成功,页面渲染失败.代码如下 经过查找资料修改代码为 或是 原因是: 由于 JavaScript 的限制, Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项时,例如:  ...

  5. Vue build打包之后,刷新页面出现404解决方案

    Vue build打包之后,刷新页面出现404,HTML5 History 模式 原因分析: vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于 ...

  6. Vue导航栏在特定的页面不显示~

    最近写vue项目遇到一些问题,我把导航栏组件放在了app.vue中,让他在每个页面都能显示了,但遇到了一个问题,在登录以及注册页面导航栏是不合理不允许存在的 解决方法: 公共模块的内容可以放在App. ...

  7. vue - vue基础/vue核心内容(2)

    今天的内容书接上回,同样是vue的核心基础部分,今天偏向于理论性,特别是vue对于数据对象的监测那一块,刚开始琢磨了半天,这股劲一过,现在好理解多了 10.watch和computed对比 计算属性案 ...

  8. 学了这么久,vue和微信小程序到底有什么样的区别?

    前言 写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别.相比之下,小程序的钩子函数要简单得多. 一.生命周期 先贴两张图: vue生命周期 小程序生命周期   相比之下 ...

  9. Vue - vue.js 常用指令

    Vue - vue.js 常用指令 目录: 一. vuejs模板语法之常用指令 1. 常用指令: v-html 2. 常用指令: v-text 3. 常用指令: v-for 4. 常用指令: v-if ...

随机推荐

  1. 安装配置python环境,并跑一个推荐系统的例子

    1.官网下载python2.7,安装完后,在环境变量Path中加上这个路径 在控制台输入python,出现版本信息,就成功了. 2.我使用的是 pycharm,注册后,在 把自己的python.exe ...

  2. python2/3 利用psycopg2 连接postgreSQL数据库。

    psycopg2 是一个通过python连接postgreSQL的库, 不要被它的名称蒙蔽了,你可能发现它的版本是psyconpg2.7.*, 以为它只能在python2上使用,实际上,这只是一个巧合 ...

  3. 教你轻松快速学会用Calibre TXT转MOBI

    教你轻松快速学会TXT转为有目录的MOBI###授人以渔,lllll5500制作### 需使用软件按先后顺序如下:一.排版助手 官网http://www.gidot.net/typesetter/二. ...

  4. DB2 键约束操作

    DB2 键约束操作 今天遇到一个问题,想要删掉一个表中的某列的唯一约束,google了一下,搜出来许许多多,找到能用的,记下来总结如下. 命令如下 select constname, tabname, ...

  5. jq的事件对象

  6. VIP之CSC

    Color Space Converter II(CSC)   不同的色彩空间用于不同的设备.如RGB一般用于电脑显示器,YCbCr一般用于数字电视,IP还支持最小和最大的保护带[个人理解,这里的保护 ...

  7. cp备份操作时如何忽略指定的目录

    需求场景:进行CP拷贝备份的时候,子目录里面的某些大文件或是一些log文件是无需备份的,那么在CP操作时需要忽略掉指定的目录. 案例演示如下:备份data目录,但是不包括里面的share子目录. 先看 ...

  8. 支持复制粘贴word图片的文本编辑器

    下载并打开基于PHP环境的工程: 运行: 尝试使用文档复制后粘贴进来:   通过粘贴后,文档以及图片被粘贴进来了,看看html代码: 由此可看出图片全部使用img标签统一. 看看文档图片被放置在哪了: ...

  9. python持久化

    将对象转为二进制字节流(pickle) import pickle my_list = [1,2,3] pickle_file = open('my_list.pkl', 'wb') #注意二进制写入 ...

  10. IMAGE WATCH工具安装与学习

    1.下载安装 从下载地址搜索IMAGE WATCH,即可下载自己所需要的IMAGE WATCH工具. 安装ImageWatch,双击ImageWatch.vsix进行安装即可: 2.使用示例 这里首先 ...