我做了一个实验,在谷歌云平台上安装了相同的应用程序,使用相同的数据库,并在两个不同的位置安装了相同的存储桶(用于图像(:美国中部和欧洲西部。但是,加载时间大不相同。我在西班牙,令人惊讶的是,美国中部的要快得多。
应用信息:
- 地区:美国中部 VS 欧洲西部
- 菲律宾比索 5.5
SQL(两者相同(:
- MySQL 第一代大师
- MySQL 5.6
- 层: D1
- 激活策略:按需
- 首选位置:关注应用
存储(谷歌存储桶(:
- 默认存储类:多区域
- 位置:欧洲(欧洲西部(和美国(美国中部(
加载时间(出于缓存目的进行一些刷新后(:
- 美国中部:2.26 秒 https://practia-delta.appspot.com/
- 欧洲西部:9.96 秒 http://gamma.practia.org/
欧洲西部的那个太慢了,不切实际。为什么会有这种差异?或者我在这里配置错了什么?在配置中还有什么我应该注意的,以使欧洲西部与美国中部一样快?
好的,所以与Google支持部门交谈,我发现确实存在加载差异,但这并不是由于服务器速度变慢。
区别来自于对CloudStorageTools API的调用,即CloudStorageTools.getImageServingUrl()
。每次调用,从欧洲访问 API 比从美国服务器慢 ~100 毫秒到 ~200 毫秒。由于我平均或多或少地拨打了 15 次电话,这导致每页加载时间明显不同。
在我的情况下,解决方案是在映像创建时缓存对CloudStorageTools.getImageServingUrl()
的调用并将结果保存在数据库中。然后在显示图像时,只需从数据库加载 Url,避免每次都调用 API。
Google支持团队证实,欧洲和美国之间CloudStorageTools API访问时间的差异是预期的行为,尽管没有记录在案。