我们的呼叫中心订购系统有这个API,我们的在线订购与之沟通。 但是许多请求和响应是相同的,或多或少是静态的 - 但是API服务器生成它们,它不仅提供静态文件。
您认为什么是缓存XML响应的最佳方法?我看过Zend_Cache。但据我所知,我认为它是基于客户端/会话的,我希望所有客户端都能利用相同的缓存。
此外,每个网页浏览都会对购物篮的内容进行价格请求,您对此建议采用哪种缓存方式。我认为Zend_Cache可能会在这里发挥作用!?
基本上我需要的是承担API服务器的负担,因此它拥有更多的资源来处理价格请求,以及每个请求更改的其他请求。
更新:13。2010年12月10.45
请求时间
2010-12-10T14:43:46+01:00 DEBUG (7): XML GET /ccstatus [0.054742097854614]
2010-12-10T14:43:46+01:00 DEBUG (7): XML GET /storestatus [0.063634157180786]
2010-12-10T14:43:46+01:00 DEBUG (7): XML GET /storestatus [0.062693119049072]
2010-12-10T14:43:46+01:00 DEBUG (7): XML GET /storestatus [0.062756061553955]
2010-12-10T14:43:46+01:00 DEBUG (7): XML GET /storestatus [0.062740087509155]
2010-12-10T14:43:46+01:00 DEBUG (7): XML GET /storelocations [0.065214872360229]
2010-12-10T14:43:46+01:00 DEBUG (7): XML GET /coupons [0.070861101150513]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /packagedeals [0.51115489006042]
2010-12-10T14:43:47+01:00 DEBUG (7): XML POST /price [0.065691947937012]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /pizzas [0.10685706138611]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /bevtypes [0.059874057769775]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /bevsizes [0.056848049163818]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /items [0.070401191711426]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /storestatus [0.062546014785767]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /storestatus [0.063254117965698]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /storestatus [0.062647104263306]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /storestatus [0.062632083892822]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /storestatus [0.062486886978149]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /items [0.059072017669678]
2010-12-10T14:43:47+01:00 DEBUG (7): XML GET /storestatus [0.062618970870972]
2010-12-10T14:43:48+01:00 DEBUG (7): XML POST /price [0.063409805297852]
这是单页面浏览量的请求,显示了一个侧面订单页面,并且该购物篮包含2个项目。
基于这些时间,你认为我会通过缓存数据获得相当大的差异吗?这些时间是空载,所以在高负载时,缓存可能会派上用场。
答案 0 :(得分:4)
Zend_Cache
不是基于会话的。它有一个number of backends to store the cached data in。例如,您可以在网络上设置memcached服务器并将XML存储在那里。您可以通过函数调用或整个页面结果或任意键进行缓存。
您可以找到一些articles about Zend_Cache
at Devzone
另一种选择是在API服务器和客户端之间添加一个缓存代理,透明地处理对API服务器的任何请求,并决定是否提供缓存响应或查询API服务器。这种方法的优点是它可以使缓存逻辑远离API服务器。缺点是它需要另一台服务器。
答案 1 :(得分:1)
我没有看到一个明显的方法来对依赖于篮子的pricerequest请求进行大量缓存。这些可能会让我觉得可能是基于会话的,变化很大,因此根据请求计算它们似乎非常必要。
其他请求 - “API请求” - 如果它们真的像你建议的那样静态,那么它们似乎是具有File或Memcached后端的直接Zend_Cache的一个很好的候选者。只需要找出一种算法,为每个要缓存的静态API请求生成唯一键。
您甚至可以在前端选项中指定无限生命周期,并运行一个cron作业,以您认为合理的频率重新填充缓存,以保持内容新鲜。
大声思考。
干杯!