上云无忧 > 文档中心 > 腾讯云 Serverless SSR 静态资源托管改造
Serverless SSR
腾讯云 Serverless SSR 静态资源托管改造

文档简介:
功能介绍: 当项目中的静态资源过多时,直接部署会导致每次请求页面时,所有的静态资源也要进行重新请求与加载,使得应用的单位时间并发数会根据页面静态资源请求数而增加,从而造成冷启动问题。 Serverless SSR 支持使用静态资源托管来存储您的静态资源,缩短冷启动时间。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

操作场景

当项目中的静态资源过多时,直接部署会导致每次请求页面时,所有的静态资源也要进行重新请求与加载,使得应用的单位时间并发数会根据页面静态资源请求数而增加,从而造成冷启动问题。 Serverless SSR 支持使用静态资源托管来存储您的静态资源,缩短冷启动时间。

配置流程

控制台配置

模板部署

通过模板创建时,Serverless SSR 已提前在模板中完成了静态资源的配置,并默认开启,您无需进行任何改造操作,即可创建一个使用静态资源托管的 SSR 应用。
创建流程:创建过程中,Serverless SSR 会自动为您创建一个新的 COS 存储桶,并将项目中自动将编译生成的 .next(或 .nuxt)和 public 文件夹静态资源上传到该 COS,使得静态资源均通过访问 COS 获取,无需重复请求云函数获取静态资源。

导入已有项目

导入已有项目时,除了在控制台开启“静态资源托管”功能外,您还需对您已有项目进行如下改造:
1. 在项目目录下,创建 next.config.js 配置文件(nuxt 项目配置文件名为 nuxt.config.js)。
2. 在配置文件中加入如下内容:
next.js
		
const isProd = process.env.NODE_ENV === 'production';
module.exports = {
env: {
STATIC_URL: isProd ? process.env.STATIC_URL : '',
},
assetPrefix: isProd ? process.env.STATIC_URL : '',
};
nuxt.js
		
export default {
// ...
env: {
STATIC_URL: process.env.STATIC_URL || '',
},
build: {
extend(config, { isDev, isClient }) {
if (!isDev && process.env.STATIC_URL) {
config.output.publicPath = process.env.STATIC_URL
}
},
},
// ...
}
3. 改造完成后,将已有项目导入并完成部署,Serverless SSR 会自动帮您注入生成的静态文件托管 URL,完成静态资源托管的配置。

命令行部署配置

如果您使用 Serevrless Framework 命令行工具完成项目开发,静态资源托管配置步骤如下:
1. 选择静态资源存储桶,获取存储路径。
您可以通过 COS 控制台Serverless COS 组件 快速创建您的存储桶,也可以选择已有存储桶,创建完成后通过 COS 控制台 的存储桶概览页获取存储桶路径。

2. 创建配置文件 next.config.js(nuxt 项目配置文件名为 nuxt.config.js),填入以下内容,STATIC_URL 改为您存储桶的 URL 路径:
next.js
		
const isProd = process.env.NODE_ENV === 'production';
const STATIC_URL =
"https://xxxxx.cos.ap-guangzhou.myqcloud.com";
module.exports = {
env: {
STATIC_URL: isProd ? STATIC_URL : '',
},
assetPrefix: isProd ? STATIC_URL : '',
};
nuxt.js
		
const STATIC_URL =
"https://xxxxx.cos.ap-guangzhou.myqcloud.com";
export default {
// ...
env: {
STATIC_URL: STATIC_URL || '',
},
build: {
extend(config, { isDev, isClient }) {
if (!isDev && STATIC_URL) {
config.output.publicPath = STATIC_URL
}
},
},
// ...
}
3. serverless.yml 中`,新增静态资源相关配置 staticConf,如下:
		
org: orgDemo
app: appDemo
stage: dev
component: nextjs
name: nextjsDemo
inputs:
src:
dist: ./
hook: npm run build
exclude:
- .env
region: ap-guangzhou
runtime: Nodejs10.15
apigatewayConf:
# 此处省略....
# 静态资源相关配置
staticConf:
cosConf:
# 这里是创建的 COS 桶名称
bucket: serverless-nextjs
4. 修改好配置后,在根目录下执行 serverless deploy ,完成部署。
		
sls deploy
相似文档
  • 操作场景: 如果没有用 Express 等 Web 框架替代 Next.js 或 Nuxt.js 默认的 Web Server,上传整个工程即可。如果有用到 Express 等 Web 框架,需要做简单的改造,本文以 Express 为例进行说明。
  • 为什么要备案? 根据国务院令第292号《互联网信息服务管理办法》和工信部令第33号《非经营性互联网信息服务备案管理办法》规定,国家对经营性互联网信息服务实行许可制度,对非经营性互联网信息服务实行备案制度。未获取许可或者未履行备案手续的,不得从事互联网信息服务,否则属于违法行为。
  • 什么是云函数的层? 简单来说,层就是把项目中不经常变更的部分独立出来,云函数运行时再把层包含的文件挂载到云函数的执行环境中。详细说明可参考云函数的 层管理 文档。
  • 消息队列 CKafka 版(TDMQ for CKafka)是基于开源 Apache Kafka 消息队列引擎,提供高吞吐性能、高可扩展性的消息队列服务。消息队列 CKafka 版 完美兼容 Apache kafka 0.9、0.10、1.1、2.4、2.8、3.2版本接口,在性能、扩展性、业务安全保障、运维等方面具有超强优势,让您在享受低成本、超强功能的同时,免除繁琐运维工作。
  • 2023-03-06:发布高级版,原标准版售罄; CKafka 高级版正式上线,在兼容原生 Kafka 2.x 等高版本的同时,提供 20MB/s 的带宽调整步长,可以根据业务需求灵活的扩容。支持跨 AZ 部署,支持ACL 访问控制。原 CKafka 标准版将停止新购,存量集群实例管控功能,如升配、续费等,均不受影响。推荐您使用 CKafka 高级版产品形态,未来还将继续基于高级版迭代新特性上线。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部