在URL中编码数据以实现高效传输

时间:2010-09-07 08:16:03

标签: java performance url encoding tracking

我正在搜索可以对URL中的数据进行编码的库,因为使用普通的“& param = value”效率很低。

我正在寻找一个接受一组已定义参数的库,并将其编码为可通过HTTP GET请求安全发送的格式。我将使用它将跟踪事件从我的播放器发送到后端。

我记得曾在一篇博客文章中看到,当Chrome将数据发送回谷歌服务器时,Chrome正在使用一个很好的库对数据进行编码,该库最近由谷歌开源。唉,我找不到它,我不记得它的名字:)

感谢您的帮助, 格言。

3 个答案:

答案 0 :(得分:0)

你的意思是URL编码?然后,您可以使用java.net.URLEncoder#encode(String,String)对具有给定编码的String(如“UTF-8”)进行URL编码。

答案 1 :(得分:0)

你是什么意思

  

使用普通的“& param = value”效率低下。

在我看来,您使用的任何库都将使用字符串操作来构建URL,因此我很难理解为什么您认为使用这样的库会更有效。

您采取了哪些测量来检验您的假设?您需要什么样的性能水平?

答案 2 :(得分:0)

如果你想要一个快速而肮脏的解决方案,我可以提出这个建议:

如果:

  • 你的一组参数是固定的(或者你可以使用一些短的id来表示一组参数)

执行:

  1. 删除param名称开销以字符串,byte []或类似方式连接所有以后可以解码的方式:)我应该避免Java序列化,因为它包含大量信息。我会尝试像DataOutputStream.write Type 这样简单的东西。易于编写且易于阅读。
  2. 删除数据冗余压缩它。使用java.util.zip.GZipOutputStream。这就是为什么我更喜欢第1步生成byte []表示!
  3. 将其设为网址友好。在这里,您将增加所需的字节大小。所以尽量用最少的开销来做。我应该尝试使用Base64。它是压缩的,所以它不是多余的(它使用最小的空间)。所以唯一的机会是使用不占用太多空间的表示。 Hexa的尺寸将翻倍。但是Base64只增加了33%。
  4. Theese的步骤并不复杂。

    1. 使用自定义类。也许是alternative serialization method所以它更容易调用。
    2. 使用java.util.zip.GZipOutput / InputStream。这是直截了当的。
    3. 使用一些Base64编码/解码库。直线前进。
    4. 希望它有所帮助!