大流量下前端页面静态化处理提升服务整体qps
来源:14-6 大流量下前端页面静态化处理提升服务整体qps

singwa
2020-06-04
随着用户不断的增多,无可避免的会导致我们的web服务访问越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要对我们的系统进行代码优化和服务器配置的优化。然后动态页面静态化是解决此性能方式之一,页面静态化在实际web系统领域用的很广,一些大公司,比如京东,淘宝,新浪等都会使用此项技术。
理论知识请查看我免费课程
PHP实现页面静态化 : https://www.imooc.com/learn/330
后台 -> 自动生成自动化页面 index.html =》后端机器某一个目录 -> 异步任务 下发到 真实前端机器上。 100 台。
定时每5分钟 10分钟 index.html -> 异步下发
如下架构图
如上图我们生成页面静态化的页面有3种情况:
1、如果是商品详情页的 当我们新增商品或者更新商品操作的时候,当我们新增或者更新操作完毕之后, 把商品ID加入kafka消息队列中,然后异步任务去读取kafka里面的ID,PHP根据这个ID查询商品详情页面所需要的数据, 利用页面静态化思想生成纯静态化的页面,这个页面放到单实例机器某一个特定的目录下, 然后 利用Linux的async 把这个目录的文件同步到远程前端机器。
思考一个问题: 有同学就会问了,为什么商品新增或者更新完毕之后 不马上来生成页面静态化呢?
答案: 因为这样你是做同步操作,万一这种方式生成页面静态化慢 那就会影响新增或者更新商品的体验,所以我们需要做异步处理,那就可以利用kafka消息队列来做。 ID放到卡夫卡里面,然后消费者端直接读取他 进行后续的操作
2、第二种方案, 比如需要生成类似首页这种静态化页面,可以在后端增加一个人工操作功能,后端用户只需要点击某一个按钮,就可以生成,如上图2操作流程
3、第二种方案如果用户不愿意去点击,我们还可以借助Linux定时任务来做,比如设置每5分钟 或者 每10分钟定时来生成,具体设置多少时间根据自身业务来定。
1回答
-
singwa
提问者
2020-06-04
请关注。
212020-09-14
相似问题
回答 1
回答 1