是否有任何方法或代码使http请求更快?

时间:2013-02-02 07:30:05

标签: ios performance http

现在我想让应用程序显示来自服务器的图片。但发现它是如此缓慢地使图片出来。是否有任何方法或代码使http请求更快?

1 个答案:

答案 0 :(得分:4)

从不同角度处理问题。把它看作是一种熵/经济的东西。

您正在描述的问题中存在两个遥远的点,他们希望在它们之间传输数据。可以说,在理想条件下实现这需要100个单位。再次假设不可能进一步降低此成本。这个成本是转移所需能量最小的地方

现在假设转移率不受我们控制。这里有一些理论上的"貌似"改进实际上只是不同的权衡集。

  1. 转发缓存/缓存:尽可能预加载/下载所有图像,以便在用户请求时准备好它们。首次安装时,请将所有内容安装为静态。

    权衡:您在磁盘空间和预处理能力上花费了大部分100分,这可能会使您的应用程序总是变慢,但是一旦将它们加载到磁盘上,性能就会很好。随着您想要的图像频繁更改,效果会降低

  2. 压缩/映射:如果您的瓶颈在于传输速率,请尽可能地压缩/映射图像,以便以低成本传输它们,但是当它们到达时,一旦到达时将使用大量处理器电源应用程序。

    权衡:CPU功率比之前使用的要多得多,但在传输过程中它们会快速移动。压缩的一方使用了更多的内存和解压缩的一面也使用了更多的内存和CPU。只有当你的图像移动缓慢因为它们很大时才会有好处,那么你会看到这种权衡利益。如果您想尝试安装7z并检查高级压缩设置并尝试非常大的地图。

  3. 绘图算法:如果您的图像是绘图而不是位图/真实图片。仅发送矢量图形格式,将所有图片(光栅图像为技术)更改为矢量图像。将大大减少将图像传送到应用程序的字节数,但最终需要更多的处理器能力。

    权衡:除了并非所有图片都可以转换为矢量图形。你将使用更多的CPU和内存,但已经内置了非常优化的优秀库。您也可以将其视为"数学压缩"如果单个无限行无法存储在Universe中的任何计算机中,则简单的一行数学表达式(如x = y + 1)将使其成为现实。

  4. 编写自己的服务器:如果您确定瓶颈在与服务提供商的通信时间(在这种情况下是一个非常有效的http服务器)。写你自己的服务器,它会很快回答你并开始发送文件。这种改进的可能性很小,甚至可以谈论权衡。

  5. 绝不强制发送重复信息:以这种方式设计和标记您的信息和图片。您只会发送非重复块,接收方将存储收到的任何块,以进一步改善其信息缓存。

    权衡:1,2和3的组合你只是另一种令人不安的100点费用。你明白了。

  6. BitTorrent意识形态:如果瓶颈是您的服务器带宽,那么有一个简单的公式可以确定使用您用户的带宽是否符合逻辑且具有正面效果。同样,它可能仅在您的数据集非常大时才有效。

    权衡:这是一个讨论权衡的有趣选择。您将使用您的用户带宽和距离来补偿您的服务器带宽不足。它需要比传统方式获取数据更多的CPU(维护更多的TCP连接)

  7. 作为结束语:没有一个功能调用可以改善并将信息从100点转移到95点的成本。在目前的技术水平上,似乎我们真正接近有效转移。我的意思是压缩,映射和各种其他技术都非常成熟,包括网络传输方法,但总有一个改进的余地。例如,目前我们认为以光速发送数据是绝对最大值,因为它们是电信号,但quantum entangled观察技术否定了这个限制,其中两个纠缠粒子在理论上以无限速度发送和接收information跨宇宙( ??)。此外,如果您可以开发出更好,更有效的压缩方式,那将是非常棒的。

    无论如何,正如你提出的一个问题,它没有提供我们可以谈论的太多信息。我强烈建议像工程师一样思考,创建一个测试环境,指出主要原因并用你所有的东西攻击它。如果您可以使用更好的数学表达式来定义问题或指出瓶颈,我们可以比通用information theory更好地回答它。

    也是最后一点。我并不是说信息传递不会更有效率它明天可能会增加1000%,我只是说这个领域非常成熟,可以在没有数学和理论工作多年的情况下获得任何巨大的改进。像任何其他研究领域一样。