tencent cloud

边缘安全加速平台 EO

动态与公告
产品动态
安全公告
产品公告
产品简介
产品概述
产品优势
应用场景
EdgeOne 与 CDN 等产品功能对比
使用限制
购买指南
试用套餐体验权益说明
免费版套餐使用说明
计费概述
计费项目
购买指引
续费指引
欠费与退款说明
套餐选型对比
关于“干净流量”计费说明
DDoS 防护容量说明
快速入门
选择业务场景
快速接入网站安全加速
通过 Pages 快速部署网站
域名服务与源站配置
域名服务
HTTPS 证书
源站配置
站点加速
概述
访问控制
智能加速
缓存配置
文件优化
网络优化
URL 重写
修改头部
修改应答内容
规则引擎
图片与视频处理
单连接下载限速
DDoS 与 Web 防护
概述
DDoS 防护
Web 防护
Bot 管理
API 资产识别(Beta)
边缘函数
概述
快速指引
操作指引
Runtime APIs
示例函数
实践教程
Pages
四层代理
概述
新建四层代理实例
修改四层代理实例配置
停用/删除四层代理实例
批量配置转发规则
获取客户端真实IP
数据分析与日志服务
日志服务
数据分析
告警服务
站点与计费管理
计费管理
站点管理
版本管理
通用策略
通用参考
配置语法
请求与响应行为
国家/地区及对应代码枚举
Terraform
Terraform 简介
安装和配置 Terraform
实践教程
自动预热/清除缓存
防盗刷/盗链实践
HTTPS 相关实践
加速优化
流量调度
数据分析与告警
第三方日志平台集成实践
对象存储类源站(例如:COS)配置实践
跨域响应配置
API 文档
History
Introduction
API Category
Making API Requests
Site APIs
Acceleration Domain Management APIs
Site Acceleration Configuration APIs
Edge Function APIs
Alias Domain APIs
Security Configuration APIs
Layer 4 Application Proxy APIs
Content Management APIs
Data Analysis APIs
Log Service APIs
Billing APIs
Certificate APIs
Origin Protection APIs
Load Balancing APIs
Diagnostic Tool APIs
Custom Response Page APIs
API Security APIs
DNS Record APIs
Content Identifier APIs
Legacy APIs
Ownership APIs
Image and Video Processing APIs
Multi-Channel Security Gateway APIs
Version Management APIs
Data Types
Error Codes
常见问题
产品特性相关问题
DNS 记录相关问题
域名配置相关问题
站点加速相关问题
数据与日志相关问题
安全防护相关问题
源站配置相关问题
排障指南
异常状态码参考
EdgeOne 4XX/5XX 状态码排障指南
520/524状态码排障指南
521/522 状态码排障指南
工具指南
相关协议
Service Level Agreement
源站防护启用特别约定
TEO 政策
隐私协议
数据处理和安全协议
联系我们
词汇表

预热 M3U8

PDF
聚焦模式
字号
最后更新时间: 2025-05-30 14:31:18
本文将详细为您介绍如何通过 EdgeOne 实现 M3U8 预热,从而系统性规避首播阶段的缓存穿透问题,确保用户请求可直接从节点获取完整资源,提升访问质量。
说明:
该能力为白名单功能,如需使用,请 联系我们

背景介绍

对于 HLS/DASH 等采用 M3U8 分片协议的流媒体服务,缓存预热能够有效解决首播阶段的性能瓶颈。由于传统分发模式中,用户首次访问需从源站逐级拉取M3U8 索引文件及关联 TS 分片资源,若边缘节点无缓存,将导致显著的首播延迟与播放卡顿。M3U8 预热的核心原理在于,获取 M3U8 索引文件关联的所有 TS 分片资源进行预热。

核心价值

降低访问延迟:用户请求直接从最近的 EdgeOne 节点获取资源,无需回源到源站。
提升播放成功率:减少因网络波动导致的视频中断。
优化源站成本:高频热点资源通过 EdgeOne 的缓存能力,降低源站带宽压力。

操作步骤

示例场景

假设您是一家视频厂商,已将站点域名 www.example.com 接入到 EdgeOne 加速,因为有热门剧集更新,期望提交影片的 M3U8 资源即可自动将关联的 TS 资源预热至 EdgeOne。

步骤 1:创建 M3U8 的预热任务

注意:
M3U8 描述文件需要确保可正常请求,并按行业标准描述分片路径,支持的格式如下:
假设请求 URL 为:https://www.example.com/c8679239vodtranssgp1500031474/5fac87c91397757892217228202/adp.1505647.m3u8
该 URL 的内容格式为相对路径,如 1505647_0_0.ts,则 EdgeOne 会自行拼接为如下的 TS URL:
https://www.example.com/c8679239vodtranssgp1500031474/5fac87c91397757892217228202/1505647_0_0.ts
M3U8 描述文件递归解析深度不超过 3 层。
解析获取的分片数会正常累加每日预热用量,当用量超出配额时,会静默处理,不再执行预热。
调用 CreatePrefetchTask 接口,其中:
1. Targets 字段:值为 M3U8 的 URL,如 https://www.example.com/c8679239vodtranssgp1500031474/5fac87c91397757892217228202/adp.1505647.m3u8
2. PrefetchMediaSegments 字段,值为 on。该字段取值说明:
on:预热 M3U8 描述文件的同时,递归解析描述文件的 TS 资源进行预热。
off:不填时,默认值为 off。仅预热提交的 M3U8 描述文件。
3. 其它入参字段按需填写即可。

步骤 2:查询 M3U8 的预热任务状态

调用 CreatePrefetchTask 接口,可以根据创建预热任务返回的 job-id 或者通过 target 进行查询,任务状态的说明如下:
processing:处理中。
success:成功。
failed:失败。
timeout:超时。
invalid:无效。

调用示例

curl
Golang
curl -X POST https://teo.tencentcloudapi.com -H "Authorization: TC3-HMAC-SHA256 Credential=******************************/2025-02-19/teo/tc3_request, SignedHeaders=content-type;host, Signature=9ec53d3ba8d4049c219052b0a2275ff3a30d3429d6295ae4c799c74d32c8f015" -H "Content-Type: application/json" -H "Host: teo.tencentcloudapi.com" -H "X-TC-Action: CreatePrefetchTask" -H "X-TC-Timestamp: 1739965395" -H "X-TC-Version: 2022-09-01" -H "X-TC-Language: zh-CN" -d '{"ZoneId":"zone-xxx","Targets":["https://www.example.com/c8679239vodtranssgp1500031474/5fac87c91397757892217228202/adp.1505647.m3u8"]}'
package main
import (
"fmt"

"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
teo "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo/v20220901"
)
func main() {
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://www.tencentcloud.com/document/product/1278/85305?from_cn_redirect=1
// 密钥可前往官网控制台 https://console.tencentcloud.com/cam/capi 进行获取
credential := common.NewCredential(
"SecretId",
"SecretKey",
)
// 实例化一个client选项,可选的,没有特殊需求可以跳过
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "teo.tencentcloudapi.com"
// 实例化要请求产品的 client 对象,国内站可填 ap-guangzhou 作为接入地域,国际站可填写 ap-singapore 作为接入地域,clientProfile 是可选的
client, _ := teo.NewClient(credential, "ap-guangzhou", cpf)

// 实例化一个请求对象,每个接口都会对应一个 request 对象
request := teo.NewCreatePrefetchTaskRequest()
request.ZoneId = common.StringPtr("zone-364ni75dvzva")
request.Targets = common.StringPtrs([]string{"https://www.example.com/1.m3u8"})
request.PrefetchMediaSegments = common.StringPtr("on")

// 返回的 resp 是一个 CreatePrefetchTaskResponse 的实例,与请求对象对应
response, err := client.CreatePrefetchTask(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
fmt.Printf("An API error has returned: %s", err)
return
}
if err != nil {
panic(err)
}
// 输出 json 格式的字符串回包
fmt.Printf("%s", response.ToJsonString())
}


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈