# cdnserver **Repository Path**: zhenghexcs/cdnserver ## Basic Information - **Project Name**: cdnserver - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-21 - **Last Updated**: 2026-02-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CDNServer ## 简介 CDNServer 是一个基于 Go 语言开发的轻量级 CDN (Content Delivery Network) 服务器。该项目实现了文件下载管理、流式读取、任务调度等核心功能,支持断点续传和缓存管理。 ## 主要特性 - **下载管理**: 支持多任务并行下载,提供缓存目录管理 - **流式读取**: 支持从任意位置开始读取文件 (断点续传) - **任务调度**: 自动管理下载任务的生命周期 - **资源清理**: 自动清理临时文件和无效缓存 ## 项目结构 ``` cdnserver/ ├── main.go # 程序入口 ├── go.mod # Go 模块依赖 ├── build.bat # Windows 构建脚本 └── service/ ├── manager.go # 下载管理器 ├── streamreader.go # 流式读取器 └── task.go # 下载任务 ``` ## 核心组件 ### DownloadManager (service/manager.go) 负责管理整个下载流程,提供统一的获取接口: - `NewDownloadManager(cacheDir string)` - 初始化管理器 - `Get(rawurl string, offset int64)` - 获取文件流 ### StreamReader (service/streamreader.go) 实现 io.ReadCloser 接口,支持流式数据传输: - 支持从指定偏移量读取数据 - 资源自动释放 ### DownloadTask (service/task.go) 管理单个下载任务的完整生命周期: - `NewDownloadTask()` - 创建下载任务 - `Start()` - 启动下载 - `RegisterReader()` - 注册读取器 - `maybeCleanup()` - 清理临时文件 ## 快速开始 ### 环境要求 - Go 1.16+ - 稳定的网络连接 ### 安装编译 Windows: ```bash ./build.bat ``` Linux/macOS: ```bash go build -o cdnserver main.go ``` ### 运行服务 ```bash ./cdnserver ``` ## 使用说明 CDNServer 主要用于代理和缓存远程文件资源,客户端可以通过 HTTP 协议请求文件,支持 Range 请求头以实现断点续传。 典型应用场景: - CDN 节点加速 - 静态资源代理 - 大文件分片下载 ## 配置说明 通过环境变量或命令行参数进行配置(具体配置项参考启动输出)。 ## 许可证 本项目遵循开源协议。 ## 贡献指南 欢迎提交 Issue 和 Pull Request 共同完善项目。