使用 Serverless 架构与传统服务器架构相比成本会降低吗( 二 )
.env 文件,配置腾讯云的 SecretId 和 SecretKey。如下:TENCENT_SECRET_ID=123TENCENT_SECRET_KEY=123执行部署命令:$ serverless deploy 以下 serverless 命令全部简写为 sls.部署成功后,直接访问 API 网关生成的域名,这里是就可以了。
类似 https://service-xxx-xxx.gz.apigw.tencentcs.com/release/ 这种链接。现有 Next.js 应用迁移如果你的项目是基于 Express.js 的自定义 Server,那么需要在项目根目录新建 sls.js 入口文件,只需要将原来启动 Node.js Server 的入口文件复制到 sls.js 中,然后进行少量改造就好,默认入口 sls.js 文件如下:const express = require(\u0026#39;express\u0026#39;);const next = require(\u0026#39;next\u0026#39;);const app = next({ dev: false });const handle = app.getRequestHandler();// 将原来的服务逻辑放入到异步函数 `createServer()`中async function createServer() { // 内部内容需要根据项目需求进行修改就好,基本是你的 `server.js` 的原代码 await app.prepare(); const server = express(); server.all(\u0026#39;*\u0026#39;, (req, res) =\u0026gt; { return handle(req, res); }); // 定义返回二进制文件类型 // 由于 Next.js 框架默认开启 `gzip`,所以这里需要配合为 `` // 如果项目关闭了 `gzip` 压缩,那么对于图片类文件,需要定制化配置,比如 `` server.binaryTypes = ; return server;}// export 函数 createServer()module.exports = createServer;添加入口文件后,重新执行部署命令 sls deploy 就 OK 了。
Serverless 部署方案的优化至此,我们已经成功将整个 Next.js 应用迁移到腾讯云的 Serverless 架构上了,但是这里有个问题,就是所有的静态资源都部署到了云函数 SCF 中,这就导致我们每次页面请求的同时,会产生很多静态源请求,对于 SCF 来说同一时间并发会比较高,而且很容易造成冷启动。而且大量静态资源通过 SCF 输出,然后经过 API 网关返回,会额外增加链路长度,也会导致静态资源加载慢,无形中也会拖累网页的加载速度。
云厂商一般会提供云对象存储功能,腾讯云叫 COS(对象存储),用它来存储我们的静态资源有天然的优势。而且开始使用有 50GB!!! 的免费容量(用来存喜爱的高清电影也是不错的吧~)。
要是在我们项目部署时,将静态资源统一上传到 COS,然后静态页面通过 SCF 渲染,这样既支持了 SSR,也解决了静态资源访问问题。而且 COS 也支持 CDN 加速,这样静态资源优化就更加方便。
那么我们如何将静态资源上传到 COS 呢?
普通青年做法登录 (https://console.cloud.tencent.com/cos5) -\u0026gt; 创建存储桶 -\u0026gt; 获取 COS 访问链接 -\u0026gt; 构建 Next.js 项目 -\u0026gt; 点击 COS 上传按钮 -\u0026gt; 选择上传文件 -\u0026gt; 开始上传 -\u0026gt; 完成文艺青年做法配置 COS 组件 -\u0026gt; 构建 Next.js 项目 -\u0026gt; 执行部署 COS 组件命令 -\u0026gt; 完成接下来我们一起学习下文艺青年是如何做的。
在项目下创建 COS 文件夹,创建 cos/serverless.yml 配置文件:org: orgDemoapp: appDemostage: devcomponent: cosname: serverless-cosinputs: # src 配置成你的next项目构建的目标目录 src: ../.next/static # 由于 next框架在访问静态文件会自动附加 _next 前缀,所以这里需要配置上传 COS 的目标目录为 /_next targetDir: /_next/static bucket: serverless-bucket region: ap-guangzhou protocol: https acl: permissions: public-read
推荐阅读
- 『先进』长江流域最先进洗舱站在宁投运 油可分离回收,水能循环使用
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 汽车|迈凯伦Artura不再使用迈凯伦祖传V8引擎了?
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- win7中本地连接跟无线网卡同时使用时是怎么样的模式
- 可不可能利用网盘的秒传功能使用伪造的MD5(或其他信息)值进行文件分享
- 为啥很多企业给用户发邮件会使用noreply/no-reply@xx.xx的邮箱
- win10激活的问题
- 汽车|国产SUV鏖战 为什么说“大心脏”的能获胜?参数不玩虚的丨动力之强 数据说话基因不是盖的丨沃尔沃同款发动机,豪横调教得是精的丨成熟的手法
- 全网通的mate8能不能插美国手机卡,在美国使用
