我们正在开发一个 iPhone 应用程序,该应用程序使用 cloudfront 显示来自 amazon S3 的图像 尽管 cloudfront 提高了图像的下载速度,但如果我们与另一个没有 CDN 的 linux 服务器相比,它还是有点慢。所以我们想知道如何进一步改进 iPhone 应用程序的图像加载。
请告诉我们
我们正在开发一个 iPhone 应用程序,该应用程序使用 cloudfront 显示来自 amazon S3 的图像 尽管 cloudfront 提高了图像的下载速度,但如果我们与另一个没有 CDN 的 linux 服务器相比,它还是有点慢。所以我们想知道如何进一步改进 iPhone 应用程序的图像加载。
请告诉我们
您还没有解释如何测试这两种环境以及速度差异是什么。
请记住,要真正评估 CDN 的性能,您必须从全球多个点进行测试,而不是从单个位置。此外,在谈论图像的加载性能时,不足以衡量实际传输速率(下载速度),还包括连接延迟和 DNS 解析时间。
通常,为了在下载图像时获得最佳效果,您需要确保正确处理四件事:dns、缓存、持久连接和并行下载。
要减少 DNS 解析时间,请确保优化 DNS 规则并使用快速 DNS 服务(例如,CNAME 解析过多可能会减慢 dns)。
要利用 CDN 的全部功能,您的缓存规则应该具有非常长的过期时间(使用Cache-Control
orExpires
标头)。
如果您从任何服务器下载多个图像,最好使用支持持久连接(支持 Keep-Alive)的客户端。这样,如果您重复使用相同的连接,就不会浪费时间重新建立新的连接。
最好并行下载多个图像,而不是使用顺序下载。Web 浏览器通常为每台服务器打开多达 6 个连接,但您可能会比这稍高一些。不过不要夸大这个数字,因为它会影响性能。
我在 React Native for ios 上遇到了类似的问题。我发现我最后有一个逗号。确保结尾没有逗号。当我删除逗号时,它的速度提高了 100 倍。
uri: `https://d24xeym8d51bhs.cloudfront.net/${globalCurrentCustomer.username}`,
}}
/>
我去掉了上面的逗号,然后它加快了速度。