PHP中的RESTful API - 优化后续请求?

时间:2016-07-19 12:56:54

标签: php performance api rest

我正在(第一次)开发一个由PHP RESTful API驱动的PHP应用程序(可能使用peej / Tonic)。来自直接访问的应用程序可能会在页面加载过程中进行20次不同的数据库调用,我试图调和20个API调用= 20x握手(可以通过Guzzle持久连接改进)以及20x连接的事实到数据库。

我相信通过更好的编程和规划,我可以将所需的API调用降至每页4-5。此时:

a)由于所有其他可用的优化,是否不值得考虑5x数据库连接的延迟+每次加载5次握手?

b)是否有一种现有的方法可以减轻这种情况,而我迄今为止未能找到?

c)我认为它违反了RESTful编程的原则,但是如果我有一个单独的API方法本身从其他API端点收集信息(例如,GET供应商WHERE x = y然后为供应商提供GET产品),是否有内部API交互的文档化方法(特别是在peej / Tonic或其他框架内)。

提前感谢大家的智慧。

1 个答案:

答案 0 :(得分:1)

请记住,客户端应该“制作服务器的请求”,这有必要履行“该请求”。服务器可能“执行20个不同的数据库查询”来准备其响应,客户端不需要知道也不关心。

客户的观点变成了,“我关心你告诉我什么,而不是 你做了什么。”

如果 希望直接向客户端发送查询响应,客户端使用这些数据“进行脏工作”,那么您仍然可以设计服务器请求,以便服务器同时执行许多查询,并将所有结果集发回...仅在一个交换中。

您的首要任务应该是有效地减少发生的交换次数。返回(在合理范围内)的数据量是次要的。

还要考虑到,“当服务器执行此操作时,工作自然会同步。”当客户端发出多个异步请求时,这些请求嗯,“异步”。考虑哪种策略更容易 debug。

如果给服务器“请求做”,它可以验证请求(从而检查客户端错误),并执行任意数量的数据库操作,可能在TRANSACTION中。这种将服务器置于非常活跃的角色的策略通常比客户端在服务器扮演被动角色的情况下驱动的交互要简单得多。