当项目中的静态资源过多时,直接部署会导致每次请求页面时,所有的静态资源也要进行重新请求与加载,使得应用的单位时间并发数会根据页面静态资源请求数而增加,从而造成冷启动问题。Serverless SSR 支持使用静态资源托管来存储您的静态资源,缩短冷启动时间。
通过模版创建时,Serverless SSR 已提前在模版中完成了静态资源的配置,并默认开启,您无需进行任何改造操作,即可创建一个使用静态资源托管的 SSR 应用。
创建流程:创建过程中,Serverless SSR 会自动为您创建一个新的 COS 存储桶,并将项目中自动将编译生成的 .next(或 .nuxt)和 public 文件夹静态资源上传到该 COS,使得静态资源均通过访问 COS 获取,无需重复请求云函数获取静态资源。
导入已有项目时,除了在控制台开启"静态资源托管"功能外,您还需对您已有项目进行如下改造:
next.config.js
配置文件(nuxt 项目配置文件名为 nuxt.config.js
)。const isProd = process.env.NODE_ENV === 'production';
module.exports = {
env: {
STATIC_URL: isProd ? process.env.STATIC_URL : '',
},
assetPrefix: isProd ? process.env.STATIC_URL : '',
};
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
}
},
},
// ...
}
如果您使用 Serevrless Framework 命令行工具完成项目开发,静态资源托管配置步骤如下:
选择静态资源存储桶,获取存储路径。
您可以通过 COS 控制台 或 Serverless COS 组件 快速创建您的存储桶,也可以选择已有存储桶,创建完成后通过 COS 控制台 的存储桶概览页获取存储桶路径。
创建配置文件 next.config.js
(nuxt 项目配置文件名为 nuxt.config.js
),填入以下内容,STATIC_URL 改为您存储桶的 URL 路径:
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 : '',
};
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
}
},
},
// ...
}
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
serverless deploy
,完成部署。sls deploy
前两天被人问到这样一个问题: 松哥,为什么我的 Spring Boot 项目打包成的 jar ...
Serverless HTTP 服务基于腾讯云 API 网关平台,为互联网业务提供0配置、高可用...
为深入贯彻落实制造强国战略,推动县域工业向高端化、集群化、智能化发展,促进...
功能介绍 申请 弹性公网IP ,支持IPv4和IPv6。 弹性公网IP(Elastic IP)提供独...
1.不要迷恋哥,嫂子会揍你 2.看我不顺眼的人,能给您心里添堵,我真是舒坦。 3...
本期导读 :【数据迁移】第四讲主题:如何将 Hive 数据按分区归档到 OSS讲师:健...
征文活动来啦~ 为了帮助新同学们更好地了解阿里云轻量应用服务器,轻松且快速地...
什么是批量计算 批量计算(BatchCompute)是一种适用于大规模并行批处理作业的分...
调用DescribeResourcesModification查询升级和降配实例规格或者系统盘时,某一可...
本文将为您介绍如何快速搭建IPv4网段或IPv6网段的VPC,以及搭建前的准备工作。 ...