Php API使用情况,在本地存储还是每次都发出请求?

Php API使用情况,在本地存储还是每次都发出请求?,php,mysql,database,api,facebook-graph-api,Php,Mysql,Database,Api,Facebook Graph Api,我想知道是否有人能给我一些建议。 目前,我们正在构建一个使用大量API的应用程序,如Flickr、Facebook、Salesforge、Picasa、Twitter、LinkedIn等。 现在我想知道解决数据使用问题的最佳方法是什么。 首先,请求所有这些数据会消耗您的数据容量。 此外,应用程序应能够同时处理1000个用户,因此使用所有这些请求可能会将我们标记为DDOS攻击者:P 所以我的解决方案是在MySQL中本地存储所有数据,每小时更新一次关键数据,每天更新一次其他数据。 你们怎么解决这个问

我想知道是否有人能给我一些建议。 目前,我们正在构建一个使用大量API的应用程序,如Flickr、Facebook、Salesforge、Picasa、Twitter、LinkedIn等。 现在我想知道解决数据使用问题的最佳方法是什么。 首先,请求所有这些数据会消耗您的数据容量。 此外,应用程序应能够同时处理1000个用户,因此使用所有这些请求可能会将我们标记为DDOS攻击者:P 所以我的解决方案是在MySQL中本地存储所有数据,每小时更新一次关键数据,每天更新一次其他数据。 你们怎么解决这个问题? 另一个问题是图像,我们将使用1000000的图片。你们会建议在本地托管并经常更新它们,还是只存储链接并发送给用户? 我面临的最后一个问题是,MySQL如何处理每秒1000个用户从复杂表发出数百个请求的情况。 例如,如果用户加载相册,数据库必须输出100张照片。想象一下,同时为100个用户完成这项工作。mysql能够处理所有这些吗

提前感谢,, Sam

大多数(如果不是全部的话)公共API都有一个名为ETag的东西。这是数据的指纹,您可以向API发出条件GET请求,如:

“如果Etag与E33SDF33D2334DMD不同,请给我id为6123765的图像!”这是通过if None Match HTTP头完成的

If-None-Match:W/"98F96B877E576EA4E5A278D41217959117663007"
然后,API将使用图像进行回复,或者它将给您一个HTTP 302(它在您的缓存中)。如果服务器向您提供的映像缓存的映像已过时,并且服务器还会在Etag HTTP响应头中向您提供新的Etag:

ETag:W/"A4D860491DE0E51EA05F46143A41CC58F7270142"

在缓存中存储图像ID、图像数据和Etag。然后,当您使用ETag从API请求图像时,如果服务器使用302进行回复,则可以交付缓存的图像。如果服务器给您一个映像和一个200回复,您将使用新映像和服务器为映像提供的Etag更新缓存。并将图像传输给调用者。

谢谢,我会调查Etag,如果您有其他解决方案,或其他问题的解决方案,请告诉我。Sam,在用户和服务器之间使用API在服务器和他们之间使用的相同Etag解决方案。Web浏览器都支持缓存控制的Etag,因此,当他们第二次请求资源时,他们将向您发送与第一次请求相同的Etag。您通常要做的是在web服务器中保留一个带有Etag的缓存,以便可以向请求具有正确Etag的资源的客户端返回302响应。