{"componentChunkName":"component---src-templates-best-practice-detail-tsx","path":"/best-practice/2020-06-10-serverless-deploy","result":{"data":{"currentBlog":{"id":"738f59df-7c1a-55e1-8356-2a054b8c9dc1","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020610/1591789849944-%E9%83%A8%E7%BD%B2.jpg","authors":["susu"],"categories":["best-practice"],"date":"2020-06-10T00:00:00.000Z","title":"腾讯云 Serverless 部署应用耗时降低了 73%","description":"压缩上传性能得到提升，控制台界面展示数据全面优化，Serverless 部署应用的过程体验更轻松、舒适。","authorslink":null,"translators":null,"translatorslink":null,"tags":["serverless","性能监控"],"keywords":"Serverless,Serverless 应用部署,Serverless Framework","outdated":null},"wordCount":{"words":99,"sentences":24,"paragraphs":24},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-06-10-serverless-deploy.md","fields":{"slug":"/best-practice/2020-06-10-serverless-deploy/","keywords":["next.js","nextjs","serverless","serverless","部署","优化","控制台","性能","上传","Serverless"]},"html":"<p>在使用 Serverless Framework 部署 Next.js，Egg.js 项目时，由于安装的依赖包过大，部署时压缩上传时间很长，可能出现上传超时、控制台卡死等问题。</p>\n<p>为此，Serverless 团队近期对部署做了一个性能优化，原来部署一个 Next.js 的 Demo 项目大约需要 <strong>55s</strong> 左右，而现在只需要 <strong>18s</strong> 的时间。</p>\n<p><strong>下面我们一起看一下，优化前后部署方案哪些不同。</strong></p>\n<h2 id=\"一、部署性能对比\"><a href=\"#%E4%B8%80%E3%80%81%E9%83%A8%E7%BD%B2%E6%80%A7%E8%83%BD%E5%AF%B9%E6%AF%94\" aria-label=\"一、部署性能对比 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>一、部署性能对比</h2>\n<p>本次提速主要做的是压缩上传性能的提升。优化后采用流式上传压缩，并直接在压缩包内注入组件代码，大大的提升了性能。选取三种不同大小的代码包进行测试，优化前后平均部署性能如下所示：</p>\n<table>\n<thead>\n<tr>\n<th>代码包大小（MB）</th>\n<th>优化前（秒）</th>\n<th>优化后（秒）</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>111 MB</td>\n<td>55 s</td>\n<td>18 s</td>\n</tr>\n<tr>\n<td>216 MB</td>\n<td>100 s</td>\n<td>38 s</td>\n</tr>\n<tr>\n<td>418 MB</td>\n<td>185 s</td>\n<td>70 s</td>\n</tr>\n</tbody>\n</table>\n<p>可见，部署的整体性能提升了将近 <strong>3倍</strong>！对于一个轻量级别的网站或博客（ 200 MB 左右），每次部署只需要 35s 左右的时间！</p>\n<h2 id=\"二、cli-控制台输出对比\"><a href=\"#%E4%BA%8C%E3%80%81cli-%E6%8E%A7%E5%88%B6%E5%8F%B0%E8%BE%93%E5%87%BA%E5%AF%B9%E6%AF%94\" aria-label=\"二、cli 控制台输出对比 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>二、CLI 控制台输出对比</h2>\n<p>在 CLI 控制台输入 <code class=\"language-text\">sls deploy</code> 命令后，CLI 控制台状态的对比，如下图所示：</p>\n<p><img src=\"https://img.serverlesscloud.cn/2020610/1591779885918-01.png\"></p>\n<p>优化前部署全流程仅有 deploying 状态，直到部署结束返回结果。优化后将部署流程的每一步实时反馈到控制台界面上，让用户更清晰的看到整个部署流程，也能方便定位问题（如本地网络问题导致上传失败）。</p>\n<p>本次部署性能的提升是不是让小伙伴们已经激动不已了呢？</p>\n<p><strong>下面通过一个实例，我们来一起感受下三倍速性能优化带来的体验！</strong></p>\n<h2 id=\"体验-nextjs-部署实战\"><a href=\"#%E4%BD%93%E9%AA%8C-nextjs-%E9%83%A8%E7%BD%B2%E5%AE%9E%E6%88%98\" aria-label=\"体验 nextjs 部署实战 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>体验 Next.js 部署实战</h2>\n<h3 id=\"1-安装最新版本的-serverless\"><a href=\"#1-%E5%AE%89%E8%A3%85%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC%E7%9A%84-serverless\" aria-label=\"1 安装最新版本的 serverless permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. 安装最新版本的 serverless</h3>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"1329209589691649000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(` npm install -g serverless`, `1329209589691649000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"> <span class=\"token function\">npm</span> <span class=\"token function\">install</span> -g serverless</code></pre></div>\n<h3 id=\"2-本地创建一个-nextjs-项目并初始化\"><a href=\"#2-%E6%9C%AC%E5%9C%B0%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA-nextjs-%E9%A1%B9%E7%9B%AE%E5%B9%B6%E5%88%9D%E5%A7%8B%E5%8C%96\" aria-label=\"2 本地创建一个 nextjs 项目并初始化 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. 本地创建一个 Next.js 项目并初始化</h3>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">npm init next-app serverless-next\ncd serverless-next</code></pre></div>\n<h3 id=\"3-配置-serverlessyml\"><a href=\"#3-%E9%85%8D%E7%BD%AE-serverlessyml\" aria-label=\"3 配置 serverlessyml permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. 配置 serverless.yml</h3>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"84111950658444920000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(` # serverless.yml\ncomponent: nextjs # (必填) 组件名称，此处为nextjs\nname: nextjsDemo # (必填) 实例名称\norg: orgDemo # (可选) 用于记录组织信息，默认值为您的腾讯云账户 appid\napp: appDemo # (可选) 该 next.js 应用名称\nstage: dev # (可选) 用于区分环境信息，默认值是 dev\n\ninputs:\n  src: \n    src: ./\n    exclude:\n      - .env\n  functionName: nextjsDemo\n  region: ap-guangzhou\n  runtime: Nodejs10.15\n  apigatewayConf:\n    protocols:\n      - http\n      - https\n    environment: release`, `84111950658444920000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"> <span class=\"token comment\"># serverless.yml</span>\ncomponent: nextjs <span class=\"token comment\"># (必填) 组件名称，此处为nextjs</span>\nname: nextjsDemo <span class=\"token comment\"># (必填) 实例名称</span>\norg: orgDemo <span class=\"token comment\"># (可选) 用于记录组织信息，默认值为您的腾讯云账户 appid</span>\napp: appDemo <span class=\"token comment\"># (可选) 该 next.js 应用名称</span>\nstage: dev <span class=\"token comment\"># (可选) 用于区分环境信息，默认值是 dev</span>\n\ninputs:\n  src: \n    src: ./\n    exclude:\n      - .env\n  functionName: nextjsDemo\n  region: ap-guangzhou\n  runtime: Nodejs10.15\n  apigatewayConf:\n    protocols:\n      - http\n      - https\n    environment: release</code></pre></div>\n<h3 id=\"4-进入项目目录，构建静态资源\"><a href=\"#4-%E8%BF%9B%E5%85%A5%E9%A1%B9%E7%9B%AE%E7%9B%AE%E5%BD%95%EF%BC%8C%E6%9E%84%E5%BB%BA%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90\" aria-label=\"4 进入项目目录，构建静态资源 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. 进入项目目录，构建静态资源</h3>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"2142490983243439000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`npm run build`, `2142490983243439000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> run build</code></pre></div>\n<h3 id=\"5-部署到云端\"><a href=\"#5-%E9%83%A8%E7%BD%B2%E5%88%B0%E4%BA%91%E7%AB%AF\" aria-label=\"5 部署到云端 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. 部署到云端</h3>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"20981597849762810000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`sls deploy`, `20981597849762810000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">sls deploy</code></pre></div>\n<p>部署成功，如下图所示：</p>\n<p><img src=\"https://img.serverlesscloud.cn/2020610/1591779892363-03.jpeg\"></p>\n<hr>\n<div id='scf-deploy-iframe-or-md'></div>\n<hr>\n<blockquote>\n<p><strong>传送门：</strong></p>\n<ul>\n<li>GitHub: <a href=\"https://github.com/serverless/serverless/blob/master/README_CN.md\">github.com/serverless</a></li>\n<li>官网：<a href=\"https://serverless.com/\">serverless.com</a></li>\n</ul>\n</blockquote>\n<p>欢迎访问：<a href=\"https://serverlesscloud.cn/\">Serverless 中文网</a>，您可以在 <a href=\"https://serverlesscloud.cn/best-practice\">最佳实践</a> 里体验更多关于 Serverless 应用的开发！</p>","tableOfContents":"<ul>\n<li><a href=\"/best-practice/2020-06-10-serverless-deploy/#%E4%B8%80%E3%80%81%E9%83%A8%E7%BD%B2%E6%80%A7%E8%83%BD%E5%AF%B9%E6%AF%94\">一、部署性能对比</a></li>\n<li><a href=\"/best-practice/2020-06-10-serverless-deploy/#%E4%BA%8C%E3%80%81cli-%E6%8E%A7%E5%88%B6%E5%8F%B0%E8%BE%93%E5%87%BA%E5%AF%B9%E6%AF%94\">二、CLI 控制台输出对比</a></li>\n<li>\n<p><a href=\"/best-practice/2020-06-10-serverless-deploy/#%E4%BD%93%E9%AA%8C-nextjs-%E9%83%A8%E7%BD%B2%E5%AE%9E%E6%88%98\">体验 Next.js 部署实战</a></p>\n<ul>\n<li><a href=\"/best-practice/2020-06-10-serverless-deploy/#1-%E5%AE%89%E8%A3%85%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC%E7%9A%84-serverless\">1. 安装最新版本的 serverless</a></li>\n<li><a href=\"/best-practice/2020-06-10-serverless-deploy/#2-%E6%9C%AC%E5%9C%B0%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA-nextjs-%E9%A1%B9%E7%9B%AE%E5%B9%B6%E5%88%9D%E5%A7%8B%E5%8C%96\">2. 本地创建一个 Next.js 项目并初始化</a></li>\n<li><a href=\"/best-practice/2020-06-10-serverless-deploy/#3-%E9%85%8D%E7%BD%AE-serverlessyml\">3. 配置 serverless.yml</a></li>\n<li><a href=\"/best-practice/2020-06-10-serverless-deploy/#4-%E8%BF%9B%E5%85%A5%E9%A1%B9%E7%9B%AE%E7%9B%AE%E5%BD%95%EF%BC%8C%E6%9E%84%E5%BB%BA%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90\">4. 进入项目目录，构建静态资源</a></li>\n<li><a href=\"/best-practice/2020-06-10-serverless-deploy/#5-%E9%83%A8%E7%BD%B2%E5%88%B0%E4%BA%91%E7%AB%AF\">5. 部署到云端</a></li>\n</ul>\n</li>\n</ul>"},"previousBlog":{"id":"9a325d75-7685-5ae2-88f2-ca493e145e28","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020623/1592900177481-00%E8%80%81%E5%8F%B8%E6%9C%BA.jpg","authors":["王盛/张升涛"],"categories":["best-practice"],"date":"2020-06-23T00:00:00.000Z","title":"腾讯云 Serverless 技术在「老司机」的落地实践","description":"「老司机」在其推荐系统、用户画像和后端的业务上使用腾讯云 serverless 技术。","authorslink":["https://github.com/yugasun"],"translators":null,"translatorslink":null,"tags":["云函数 SCF","客户案例"],"keywords":"Serverless SSR,Serverless Egg.js","outdated":null},"wordCount":{"words":171,"sentences":22,"paragraphs":22},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-06-23-driver-case.md","fields":{"slug":"/best-practice/2020-06-23-driver-case/","keywords":["serverless","Serverless","服务","开发人员","部署","serverless","迁移","技术","汽车"]}},"nextBlog":{"id":"235ebbe5-7f0a-524b-99a9-06860ace33fb","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020610/1591775415513-serverless%2Bssr.png","authors":["yugasun"],"categories":["best-practice"],"date":"2020-06-10T00:00:00.000Z","title":"前端福音：Serverless 和 SSR 的天作之合","description":"Serverless 给前端带来了什么，前端为什么要关注 Serverless？","authorslink":["https://github.com/yugasun"],"translators":null,"translatorslink":null,"tags":["Serverless SSR","前端"],"keywords":"Serverless SSR,Serverless Egg.js","outdated":null},"wordCount":{"words":456,"sentences":88,"paragraphs":87},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-06-10-ssr-yuga.md","fields":{"slug":"/best-practice/2020-06-10-ssr-yuga/","keywords":["Javascript","nextjs","serverless","服务端渲染","客户端渲染","云函数","Serverless","serverless","部署","center"]}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"blogId":"738f59df-7c1a-55e1-8356-2a054b8c9dc1","previousBlogId":"9a325d75-7685-5ae2-88f2-ca493e145e28","nextBlogId":"235ebbe5-7f0a-524b-99a9-06860ace33fb"}}}