在第一个应用程序启动时,我下载~50 MB的文件,然后解压缩它们。
我有来自世界各地的用户,我有3个不同的服务器,我可以托管文件,所以我想使用它们并检查代码哪个服务器最快/最接近用户并使用它..
我怎样才能做到这一点?
答案 0 :(得分:1)
为什么不使用Google Play服务添加“扩展文件”?见这里:http://developer.android.com/guide/google/play/expansion-files.html
我没有亲自尝试过,但它绝对可以帮到你。
答案 1 :(得分:0)
可能会向每个服务器发送一个简单的ping.php
脚本请求,测量读取响应所需的时间并选择最佳响应。不要忘记向虚拟服务器发送第一个请求或下载网页,以便手机激活网络并将其设置为最佳性能(否则,与下一个服务器相比,您的第一台服务器可能总是看起来很慢)
答案 2 :(得分:0)
我之前从未这样做过,所以这只是一个猜测,但如果你想找出哪个更接近:
获取用户的IP地址: How to get IP address of the device from code?
对IP地址执行反向DNS查找,这将为您提供以下内容: c-24-131-5-42.hsd1.va.comcast.net
通过查看结果字符串,您可以判断我住在VA。使用更接近您的服务器并使用它的国家/州的数据。
答案 3 :(得分:0)
自己这样做;您需要使用设备的IP地址查询geo ip服务以获取其大致位置;然后将其与哪个服务器进行比较,以便最好地提供文件。这有其自身的问题(代理/ VPN隧道就是其中之一)。
其次是ping您的服务器。这里的问题可能是提供商可能阻止ping(特别是如果设备不在wifi上);即使它们在wifi上,也可以阻止ping用于外部地址,并且仅允许在网络内。在这种情况下; ping总是会失败。
所以可靠的方法是使用Content Delivery Network。他们将负责自动从最近的服务器提供文件。您无需修改应用程序或管理不同的服务器。
答案 4 :(得分:0)
您还可以尝试与您拥有的每台服务器建立TCP连接,并跟踪执行此操作所需的时间。然后使用具有最短时间的那个。
或让设备从包含服务器已知可用性的每台服务器中提取文件。