【问题标题】:Javascript string compression and PHP/Ruby decompressionJavascript字符串压缩和PHP/Ruby解压
【发布时间】:2013-02-14 08:04:35
【问题描述】:

是否有用于字符串的 Javascript 压缩和 PHP/Ruby 解压缩库?我需要它,因为我需要使用 Ajax 在慢速上传链接上向使用 PHP/Ruby 作为服务器端语言的 Web 服务器发送一个很长的文本字符串。

var x = $('#sources').html();
// a very-very long text
var xo = x, o = {};
if(x.length>512*1024) {
  x = compress(x);
  o.c = 1;
}
o.x = x;
$.post('target.php',o,function(res){alert(res==xo)});

在服务器端(例如 PHP):

<?php
  if(isset($_POST['c']) && $_POST['c']=='1') {
    $x = decompress($_POST['x']);
  } else {
    $x = $_POST['x'];
  }
  echo $x;

【问题讨论】:

    标签: php javascript ruby compression


    【解决方案1】:

    最常见的压缩算法Zip有很多JS实现。

    例如zip.js

    邮编当然也是supported in PHP

    【讨论】:

    • 啊,所以我必须先写到一个文件,然后再解压?
    【解决方案2】:

    应该这样做

    http://webdevwonders.com/lzw-compression-and-decompression-with-javascript-and-php/

    LZW 适用于实际包含人类可读文本的字符串

    【讨论】:

      【解决方案3】:

      假设您通过 http 发送文件,我建议您让您的网络服务器通过使用 gzip 内容编码发送文件来处理此问题。

      例如,如果您使用 Apache,则可以启用 mod_deflate

      如果由于某种原因您无法更改 Web 服务器配置,php 也有一个内置的 gzip 处理程序,您可以使用它来代替。见:ob_gzhandler

      编辑:

      对于客户端到服务器,任何 XmlHttpRequest 实现似乎都不直接支持这一点。您也许可以为 Javascript 找到一个自定义 gzip 压缩算法,然后设置请求标头以指示它已压缩。这样它就会被 Web 服务器透明地解码,您不必在 php 中做任何特殊的事情。

      查看此页面:JavaScript implementation of Gzip

      【讨论】:

      • 你可以压缩从服务器到客户端的答案,但你也可以压缩请求吗?
      • 好点.. 看起来没有任何 XmlHttpRequest 实现支持这一点。
      • 我认为一个问题是客户端不知道服务器处理什么压缩方案。这可能需要第一个请求才能问这个问题,因此在 javascript 中处理可能会很痛苦。
      • 理论上是的,但是由于 OP 知道客户端正在与哪个服务器通信,因此实际上是已知的。
      【解决方案4】:

      在谷歌上搜索“ruby decompress string”会得到这个:How to decompress Gzip string in ruby?,这就是你要找的。​​p>

      【讨论】:

        猜你喜欢
        • 2013-10-30
        • 2011-07-16
        • 2013-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        • 1970-01-01
        相关资源
        最近更新 更多