当前位置: 首页 > wzjs >正文

小公司让我用织梦做网站卖网站怎样做

小公司让我用织梦做网站,卖网站怎样做,大连网站开发公司排名,新莱芜客户端音乐缓存管理器的性能优化方法分析 主要就是采用了缓存优化这一策略,保障了用户的听歌体验。 MusicCacheManager 类采用了多种性能优化方法,使其能够高效地管理在线音乐缓存。以下是主要的性能优化策略: 1. 单例模式 // ... existing cod…

音乐缓存管理器的性能优化方法分析

主要就是采用了缓存优化这一策略,保障了用户的听歌体验。

MusicCacheManager 类采用了多种性能优化方法,使其能够高效地管理在线音乐缓存。以下是主要的性能优化策略:

1. 单例模式

// ... existing code ...
private static var instance: MusicCacheManager?static func shared() -> MusicCacheManager {if instance == nil {instance = MusicCacheManager()}return instance!
}
// ... existing code ...

单例模式确保了缓存管理器只有一个实例,避免了重复初始化和资源浪费。

2. 多队列并发处理

// ... existing code ...
/// 串行队列,用于同步访问共享资源
private let serialQueue = DispatchQueue(label: "com.myMusic.musicCacheManager")/// 并发队列,用于处理下载任务
private let downloadQueue = DispatchQueue(label: "com.myMusic.musicCacheManager.download", attributes: .concurrent)
// ... existing code ...
  • 使用串行队列保护共享资源(如下载任务字典)的访问,避免竞态条件
  • 使用并发队列处理下载任务,提高并行性能

3. 优先级队列管理

// ... existing code ...
// 优先级:第一首歌曲使用utility,后面的歌曲使用background
let qos: DispatchQoS.QoSClass = self.preloadQueue.isEmpty ? .utility : .background// 在适当的优先级线程中缓存
DispatchQueue.global(qos: qos).async { [weak self] in// ... existing code ...
}
// ... existing code ...

根据任务重要性分配不同的QoS优先级,确保重要任务(如下一首歌曲)优先处理。

4. 延迟加载

// ... existing code ...
private lazy var session: URLSession = {let config = URLSessionConfiguration.defaultconfig.connectionProxyDictionary = [:] // 忽略系统代理设置config.timeoutIntervalForResource = 60.0 // 资源超时时间为60秒config.timeoutIntervalForRequest = 30.0 // 请求超时时间为30秒return URLSession(configuration: config)
}()
// ... existing code ...

使用lazy关键字延迟初始化URLSession,直到真正需要时才创建。

5. 智能预加载策略

// ... existing code ...
func preloadNextSongs(in playlist: [Songs], currentIndex: Int, preloadCount: Int = 1) {// ... existing code ...
}private func processPreloadQueue() {// ... existing code ...// 缓存完成后,延迟一段时间再处理下一首,避免同时下载多首歌曲DispatchQueue.global(qos: .background).asyncAfter(deadline: .now() + 2.0) { [weak self] in// ... existing code ...}// ... existing code ...
}
// ... existing code ...
  • 预先加载即将播放的歌曲,提高用户体验
  • 限制同时下载的歌曲数量,避免网络资源竞争
  • 使用延迟处理机制,错开下载时间

6. 缓存大小管理

// ... existing code ...
private func cleanupIfNeeded() {DispatchQueue.global(qos: .background).async { [weak self] in// ... existing code ...if cacheSize > self.cacheConfig.maxCacheSize * UInt64(0.9) { // 超过90%时清理// ... existing code ...self.cleanupCache()}}
}
// ... existing code ...
  • 自动监控缓存大小,超过阈值时在后台清理
  • 基于LRU(最近最少使用)策略清理缓存

7. 内存管理

// ... existing code ...
serialQueue.async { [weak self] inguard let self = self else { return }// ... existing code ...
}
// ... existing code ...

使用[weak self]guard let self = self else { return }防止循环引用和内存泄漏。

8. 网络优化

// ... existing code ...
private lazy var session: URLSession = {let config = URLSessionConfiguration.defaultconfig.connectionProxyDictionary = [:] // 忽略系统代理设置config.timeoutIntervalForResource = 60.0 // 资源超时时间为60秒config.timeoutIntervalForRequest = 30.0 // 请求超时时间为30秒return URLSession(configuration: config)
}()
// ... existing code ...
  • 自定义网络超时设置,避免长时间等待
  • 忽略系统代理设置,提高直接连接性能

9. 启动性能优化

// ... existing code ...
private func performCleanupIfNeeded() {DispatchQueue.global(qos: .background).asyncAfter(deadline: .now() + 5) { [weak self] in// 启动后延迟5秒再检查,避免影响应用启动速度self?.cleanupIfNeeded()}
}
// ... existing code ...

延迟执行非关键任务,确保应用启动速度不受影响。

10. 错误处理与恢复

// ... existing code ...
enum CacheError: Int, Error {case invalidURL = 1001case downloadInProgress = 1002case emptyTempURL = 1003case fileOperationFailed = 1004case networkError = 1005var localizedDescription: String {// ... existing code ...}
}
// ... existing code ...

完善的错误处理机制,确保在出现问题时能够优雅地恢复和继续运行。

这些优化策略共同确保了音乐缓存管理器能够高效地运行,提供流畅的用户体验,同时避免过度消耗设备资源。


文章转载自:

http://iqrWFlYJ.chjnb.cn
http://SCj9J0yg.chjnb.cn
http://zu5o7ORs.chjnb.cn
http://SkPRbThs.chjnb.cn
http://vK9CiwfD.chjnb.cn
http://ZyZFM3Qg.chjnb.cn
http://EmZt4Log.chjnb.cn
http://jkCvQYE1.chjnb.cn
http://sggUP2BN.chjnb.cn
http://ckLIxXHp.chjnb.cn
http://0n11ab8r.chjnb.cn
http://Vj3YiMGV.chjnb.cn
http://VqJtyQ0A.chjnb.cn
http://DkEwZIvo.chjnb.cn
http://6vCs5vZF.chjnb.cn
http://iTodfFaN.chjnb.cn
http://1kCArjhR.chjnb.cn
http://6wBUmJc0.chjnb.cn
http://fcMCFj78.chjnb.cn
http://eyVAPCrr.chjnb.cn
http://rlB3e8SX.chjnb.cn
http://7k5txRMd.chjnb.cn
http://nQzZ27sg.chjnb.cn
http://WP5LL9Pa.chjnb.cn
http://z3nlGZi9.chjnb.cn
http://prioJBdn.chjnb.cn
http://ebXkyPG6.chjnb.cn
http://i0UWzykx.chjnb.cn
http://7FUnlYea.chjnb.cn
http://Ekv8YGSq.chjnb.cn
http://www.dtcms.com/wzjs/630639.html

相关文章:

  • 做网站什么配置够用专业北京网站建设公司哪家好
  • 外国人做中国英语视频网站淘宝客网站可以做分销吗
  • 如何防止别人攻击自己的网站jsp门户网站开发
  • 网页调用 wordpress 图片编辑器中国十大seo
  • 广州网站制作选哪家中国联通与腾讯设立混改合营企业
  • 关于网站建设实训报告46设计网站官网
  • 微小店网站建设用途网站搭建费用
  • 哈尔滨php网站开发公司经营网站备案
  • 做网站数据库要建什么表wordpress中设置ajax分页
  • 用竹片做的网站番禺做网站企业
  • 一定火网站建设定制上传网站安装教程视频
  • 网站图片用什么软件做pageadmin的应用
  • 怎么做网站底部备案号wordpress极简模版
  • 温州网站优化关键词规范网站建设情况的报告
  • 北京最好的网站建设中小企业管理课程培训
  • 学校网站建设成功公司推广网站怎么做
  • 网站开发有哪些书籍woocommerce做零售网站
  • 怎么样让公司网站网站推广的技巧和方法
  • 无锡建设招标网站域名申请的步骤包括
  • 运营好还是网站开发好网站合同
  • wordpress建站过程h5制作软件 知乎 推荐
  • 网站推广运营招聘做亚马逊有哪些站外折扣网站
  • 撰写网站栏目规划wordpress主题结构
  • 免费写作文网站大连网站制作公司费用多少
  • 衡阳市城市建设投资有限公司网站网站建设模块是什么
  • 网站主题推荐wordpress 标签
  • 重庆专业网站建设公司哪家好wordpress模板作者怎样去除
  • 微信小程序开发流程文档seo论坛的网址
  • 网站建设 就业方向网站建设维护什么意思
  • 在线平面设计网站哪个好永久不收费的软件app