# 下载配置功能实现文档 ## 📋 功能概述 实现了灵活的下载配置系统,允许用户选择下载本站资源、所有资源或自定义资源。 --- ## 🎯 配置选项 ### 1. **下载模式 (Mode)** ```typescript type DownloadMode = 'same-domain' | 'all-resources' | 'custom' ``` #### same-domain(默认) - ✅ 只下载同域名资源 - ✅ 外部CDN保持原链接 - ✅ 文件小,下载快 - ⚠️ 需要网络才能完整浏览 #### all-resources - ✅ 下载所有资源(包括外部CDN) - ✅ 完全离线可用 - ⚠️ 文件大,下载慢 - ⚠️ 可能违反CDN使用条款 #### custom - ✅ 自定义下载规则 - ✅ 指定特定域名下载 - ✅ 平衡体积和可用性 --- ## 🔧 API 使用 ### Go 后端 ```go // 获取默认配置 options := types.DefaultDownloadOptions() // 自定义配置 options := types.DownloadOptions{ Mode: types.DownloadModeCustom, CustomDomains: []string{ "cdn.example.com", "static.example.com", }, SkipLargeFiles: true, MaxFileSize: 10, // MB DownloadExternalCSS: true, DownloadExternalJS: true, DownloadExternalImages: false, DownloadExternalVideos: false, } // 使用配置下载 App.DownloadSiteWithOptions(uri, resources, options) ``` ### TypeScript 前端 ```typescript interface DownloadOptions { mode: 'same-domain' | 'all-resources' | 'custom' customDomains: string[] skipLargeFiles: boolean maxFileSize: number downloadExternalCSS: boolean downloadExternalJS: boolean downloadExternalImages: boolean downloadExternalVideos: boolean } // 调用后端API const options: DownloadOptions = { mode: 'custom', customDomains: ['cdn.jsdelivr.net'], skipLargeFiles: true, maxFileSize: 10, downloadExternalCSS: true, downloadExternalJS: true, downloadExternalImages: false, downloadExternalVideos: false, } await App.DownloadSiteWithOptions(url, resources, options) ``` --- ## 🎨 前端UI示例 ### Vue组件代码 ```vue ``` --- ## 📊 配置场景示例 ### 场景1:快速备份(默认) ```json { "mode": "same-domain", "skipLargeFiles": true, "maxFileSize": 10 } ``` **适用**:快速备份网站,保持文件结构 **优点**:快速、文件小 **缺点**:需要网络才能查看外部资源 --- ### 场景2:完全离线 ```json { "mode": "all-resources", "downloadExternalCSS": true, "downloadExternalJS": true, "downloadExternalImages": true, "downloadExternalVideos": true, "skipLargeFiles": true, "maxFileSize": 50 } ``` **适用**:需要完全离线浏览 **优点**:不依赖网络 **缺点**:文件大、下载慢 --- ### 场景3:只下载常用CDN ```json { "mode": "custom", "customDomains": [ "cdn.jsdelivr.net", "unpkg.com", "cdnjs.cloudflare.com" ], "downloadExternalCSS": true, "downloadExternalJS": true, "downloadExternalImages": false, "downloadExternalVideos": false, "skipLargeFiles": true, "maxFileSize": 10 } ``` **适用**:平衡体积和可用性 **优点**:关键资源离线可用 **缺点**:部分资源仍需网络 --- ## ⚠️ 注意事项 ### 1. **法律合规** - 下载CDN资源可能违反服务条款 - 仅用于个人学习和备份 - 不得用于商业用途 ### 2. **性能影响** - 下载所有资源会显著增加时间 - 建议设置合理的文件大小限制 - 大型网站可能需要数小时 ### 3. **存储空间** - 全资源模式可能需要数GB空间 - 定期清理不需要的下载 - 建议保留至少50%可用空间 ### 4. **网络礼仪** - 避免过于频繁的请求 - 尊重网站的robots.txt - 不要对同一网站重复下载 --- ## 🚀 后续优化 1. **智能预估** - 根据资源列表预估下载大小和时间 - 提供取消和暂停功能 2. **下载队列** - 支持批量下载多个网站 - 队列管理和优先级 3. **增量下载** - 检测已下载的文件 - 只下载新增或修改的资源 4. **压缩存储** - 下载后自动压缩 - 节省磁盘空间 --- ## 📝 总结 下载配置功能提供了灵活的资源管理: ✅ **三种模式** - 本站/全部/自定义 ✅ **类型过滤** - 选择性下载资源类型 ✅ **大小限制** - 跳过超大文件 ✅ **域名白名单** - 精确控制下载范围 ✅ **用户友好** - 直观的配置界面 现在用户可以根据不同需求选择最合适的下载策略!