PHP-批量的生成大批有相互关系的静态页面遇到性能瓶颈

发布于 2016-12-22 15:44:51 字数 383 浏览 1124 评论 1

场景:
视频id:vid
专辑id:pid
单视频地址:abc.com/vplay/vid.html
专辑地址 abc.com/pplay/pid/1...3.html
队列:starling
逻辑:
1.专辑信息改动,所有专辑地址需要重新生成一次页面
2.单视频改动,除单视频地址重新生成页面,还需找到相关所有包含该视频的专辑地址也要重新生成一次页面(专辑有个字段vidstring:vid1,vid2,vid3)
问题:
1.队列堆积的时候不好控制(准备换队列,可以设置优先级的)
2.涉及专辑集数很多的情况,生成播放页需要大量的时间,导致新上线的视频播放页生效慢。
3.极大浪费服务器的资源

求相关的优化方案。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想挽留 2017-10-08 17:45:14

如果很明确就是页面生成太耗时间导致的,建议你从以下几方面入手分析问题的原因:
1、页面生成是否可并发进行。你用队列来实现说明有次序的问题要考虑,但是不是所有的生成操作都需要一个一个地顺序处理?数据一致性有没有可能通过其它方式来保证?如果页面生成可以并行化,那么伸缩性就可以大幅提升,碰到性能问题就不会这么窘迫了。
2、页面生成的逻辑是不是有调优空间。既然你已经使用了memory cache,那生成一个页面差不多应该在几十ms量级,做个profiling看看在哪里消耗了过多的时间。如果大量的页面需要频繁更新,那就要考虑是不是应该放弃静态页面,改用动态页面来实现。因为静态页面的主要好处是便于CDN缓存,但是页面更新太频繁CDN的效率也会降低,何况视频网站主要成本在视频的带宽占用,页面上CDN的收益不高。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文