过去我曾问过几个关于如何创建自己的API的问题,以允许外部站点访问数据库中的db I store。这个特殊问题是我要求提供有关如何优化外部站点的API访问以帮助保持本地服务器负载的建议。首先,API的设置方式是使用MySQL来保存数据和php来提供数据。 API本身由URL中的API密钥调用。例如:
http://mysite.com/get_listings.php?key=somekey
然后我的脚本执行上述操作所需的操作,然后以json格式返回结果。目前,该API每月提供10-15k个独立呼叫,我正在添加另一组网站,这些网站将在API现在服务的基础上每月带来另外20-30k个独立呼叫。没有缓存,只是通过php脚本直接调用我的API,它每次调用都会查询MySQL数据库。它返回的数据类型基本上是故事和个人资料信息,而电话则是最新故事,故事作者简介和故事详情。
除了PHP代码的正常优化和优化MySQL查询和索引之外,您还可以建议任何其他优化技术,这些技术可以帮助保持服务器负载下降并仍然快速为外部站点提供API吗?我知道外部网站本身也应该在他们的最后进行某种缓存。但是在我的结尾你建议缓存db中的结果然后提供缓存吗?如果是这样,使用memcache会是一个不错的选择吗?或者将json结果存储在redis中?或者一个简单的文件缓存系统可能会工作?缓存以外的任何东西?显然,服务器硬件可以有所作为,但超出了本文的范围。我会说,虽然我将获得一个全新的服务器,只会致力于这样做。
如果有帮助的话,我有root权限来安装其他软件。
答案 0 :(得分:3)
除非您具有使用其他只读节点扩展mysql的能力,否则您应该开始使用Redis或Memcached。 Redis可能更擅长处理复杂的数据类型。这是一个食谱。
如果您使用redis进行永久存储,请确保您的PHP知道如何清理它。根据我的经验,虽然我仍然在MySQL中存储数据,但结果却非常有弹性。
如果您了解computation complexities,Redis会很棒。