我正在对分布式 API 请求进行实验。我正在用 PHP 构建一个网站,允许我的用户代表服务器发出请求。通过这样做,我应该能够将请求分发给所有用户,并让我的应用程序即使在大量流量的情况下也能保持可扩展性。
我的最终目标是让浏览器发出 API 请求,解析响应并将解析后的数据提交到我的服务器。这应该消除我的应用程序当前遭受的性能瓶颈。但是,我遇到了如何构建这个系统的问题。
以下是我设想的系统工作方式:
- 用户访问网站
- API 请求队列是从工作列表中加载的
- 浏览器从工作队列发出多个 API 请求并解析响应
- 浏览器通过 AJAX 将解析后的数据发送到服务器
- 服务器更新旧数据,添加时间戳,并从工作队列中删除请求
- 在预定的 TTL 工作再次添加到队列并重复处理之后
以下是我的担忧:
- API 请求不是在与我的服务器相同的域上发出的。我知道这会在从用户的浏览器请求数据时出现问题(因为同源策略)。我已经研究过使用代理 PHP 文件,但这也引起了一些担忧——请参阅我的下一个项目符号。
- 分发解析只是问题的一部分,另一个问题是限制我的请求。我每秒可以发出的请求数量有限,这导致了可伸缩性问题。恐怕通过创建代理文件来发出请求,我仍然受到请求限制的限制,因为从技术上讲,请求仍然通过代理文件来自我的服务器。
- 由于浏览器正在解析响应并将其发送到我的服务器,因此可以想象有人可以通过 AJAX 调用将恶意数据注入服务器。
最后是我的问题:
- 根据我的要求,使用代理 PHP 文件是发出这些请求的最佳方法吗?
- 如果使用代理文件是最好的方法,我是否仍会受到请求限制的限制,或者是否将请求(以及因此的限制限制)传递给客户端?
- 除了标准的安全措施(转义字符串、剥离斜线和使用 SSL)之外,您还能想到在 AJAX 到服务器的通信中采取的任何其他预防措施吗?
- 有没有人这样做过,如果是这样,有没有我可以效仿的例子?我四处搜索,我的搜索措辞一定是错误的,因为我的所有结果都与我的要求无关。
- 最后是一些可选的意见问题……您对这种方法有什么看法?这种结构是否存在致命缺陷?有没有更好的方法来实现我想要做的事情?
预先感谢您的帮助!