2013-02-02 44 views
-2

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

+3

获取更快的网络? :) –

+0

更好的网络或智能缓存:) – AndrewShmig

+3

HTTP并不神奇,iOS也不是。没有'make_this_faster()'函数。 – 2013-02-02 07:32:43

回答

4

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

在描述的问题中存在两个问题,他们希望在它们之间传输数据。假设这将花费100个单位在理想条件下实现。再次让我们假设不可能进一步降低这个成本。这个成本是传输所需能量最小的地方

现在假设传输速率不在我们的控制范围之内。以下是一些理论上的“看似”改进,它们实际上只是不同的权衡集。

  1. 正向缓存/缓存:预载/下载的所有图像尽可能所以他们会在用户请求他们做好准备。在第一次安装时安装一切都是静态的。

    权衡:你在磁盘空间和预处理能力上花费了大部分100分,这可能会让你的应用总是慢一点,但是一旦它们加载到磁盘上,性能就会很好。压缩/映射:如果您的瓶颈处于传输速率,您可以尽可能多地压缩/映射图像,这样它们将以低成本进行传输,但是当它们到达时,您将使用很多处理器能力一旦到达应用程序。

    权衡:CPU功耗比以前使用的多得多,但在传输过程中它们将快速移动。压缩侧使用更多的内存和解压缩的侧面也使用更多的内存和CPU。只有当你的图片因为巨大而缓慢移动时才会有效,那么你会看到这种折中的好处。如果你想尝试这个安装7z和检查先进的压缩设置,并尝试真正巨大的地图。

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

    权衡:除了不是所有的图片都可以转换成矢量图形。你将会使用更多的CPU和内存,但是那里已经建立了非常优化的优秀库。你也可以认为这是“数学压缩”,其中一个单一的无限行不能存储在宇宙中的任何一台计算机上,一个简单的一行数学表达式如x = y + 1将使它发生。

  3. 编写你自己的服务器:如果你确定瓶颈在与服务提供者的通信时间(在这种情况下,最有可能是非常有效的http服务器)。写你自己的服务器,它非常快速地回答你并开始发送文件。这种改进的可能之处在于低甚至谈论权衡。

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

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

  5. BitTorrent意识形态:如果瓶颈是您的服务器带宽,有一个简单的公式来查看使用您的用户带宽是否符合逻辑并具有积极影响。如果你的数据集非常大,它可能只会有效。

    权衡:这是一个有趣的选项来讨论权衡。您将使用您的用户带宽和邻近度来弥补您的服务器缺乏带宽。它需要多一点点的CPU采集数据(保持更多的TCP连接)

作为一个闭注的那么传统的方式:有不能是一个函数调用,可以改善并从100传递信息的成本指向95分。在目前的技术水平上,似乎我们真的接近于有效转移。我的意思是压缩,映射和其他各种技术相当成熟,包括网络传输方法,但总是有改进的空间。例如,目前我们认为以光速发送数据是绝对最大值,因为它们是电信号,但观测技术拒绝这个限制,其中两个纠缠粒子在理论上以无限速度在宇宙(??)发送和接收information。另外如果你可以开发一个更好,更有效的压缩方式,那将是非常棒的。

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

也是最后一个注释。我并不是说信息传递不会更高效,明天它可能会上涨1000%,我只是说这个领域相当成熟,在没有数学和理论多年的工作的情况下得到任何巨大的改进。像其他任何研究领域一样。

+0

有趣的答案。 –

+0

不错的,很多东西描述为学习者。 –

+0

@Ail Akdurak很惊讶!让我深思!非常感谢你的出色答案。我会为你深思。 – Guixian

相关问题