相关疑难解决方法(0)

为什么对Apache提供的文本文件使用deflate而不是gzip?

这两种方法为LAMP服务器提供的html,css和javascript文件提供了哪些优势.还有更好的选择吗?

服务器使用Json向地图应用程序提供信息,因此大量的小文件.

另请参阅为压缩选择gzip over deflate是否有任何性能损失?

compression apache lamp gzip deflate

208
推荐指数
3
解决办法
13万
查看次数

与GZIP相比,缩小了压缩浏览器的兼容性和优势


更新2012年2月10日:

zOompf已经完成了这个题目了一些非常深入的研究在这里.它胜过下面的任何发现.


更新2010年9月11日:

一个测试平台已经为此创建这里




一些背景信息的GZIP和DEFLATE(zlib)的HTTP 1.1定义:

"'Gzip'是gzip格式,'deflate'是zlib格式.它们应该调用第二个'zlib'来避免与原始deflate压缩数据格式混淆.虽然HTTP 1.1 RFC 2616正确指向RFC 1950中针对'deflate'传输编码的zlib规范,有报告称服务器和浏览器根据RFC 1951中的deflate规范错误地生成或期望原始deflate数据,最明显的是Microsoft产品.所以尽管'deflate'使用zlib格式的传输编码将是更有效的方法(实际上正是 zlib格式的设计),使用'gzip'传输编码可能更可靠,因为HTTP上的名称选择不幸1.1作者." (来源:http://www.gzip.org/zlib/zlib_faq.html)

所以,我的问题是:如果我使用NO zlib包装器发送RAW deflate数据(或gzip,就此而言)是否有任何现代浏览器(例如,IE6和更高版本,FF,Chrome,Safari等)无法理解原始的deflate压缩数据(假设HTTP请求标头"Accept-Encoding"包含"deflate")?

放气数据总是比GZIP小几个字节.

如果所有这些浏览器都能成功解码数据,那么发送RAW deflate而不是zlib会有什么缺点?



更新2010年9月11日:

一个测试平台已经为此创建这里

compression optimization gzip zlib deflate

89
推荐指数
2
解决办法
4万
查看次数

使用PHP ob_start()与Apache Deflate/Gzip压缩内容?

大多数网站都希望压缩其内容以节省带宽.但是,对于运行PHP的apache服务器,有两种方法可以实现 - 使用PHP或使用apache.那么哪一个在您的服务器上更快或更容易?

例如,在PHP中,我在页面的开头运行以下函数来启用它:

/**
 * Gzip compress page output
 * Original function came from wordpress.org
 */
function gzip_compression() {

    //If no encoding was given - then it must not be able to accept gzip pages
    if( empty($_SERVER['HTTP_ACCEPT_ENCODING']) ) { return false; }

    //If zlib is not ALREADY compressing the page - and ob_gzhandler is set
    if (( ini_get('zlib.output_compression') == 'On'
        OR ini_get('zlib.output_compression_level') > 0 )
        OR ini_get('output_handler') == 'ob_gzhandler' ) {
        return false;
    }

    //Else if zlib is …
Run Code Online (Sandbox Code Playgroud)

php compression apache gzip

25
推荐指数
1
解决办法
1万
查看次数

解压或膨胀 php://input 流?

我正在尝试直接从php://input流中解压缩 zip 文件。我正在运行 Laravel Homestead, PHP 7.1.3-3+deb.sury.org~xenial+1,端点为myproject.app/upload,这是curl命令:

curl --request POST \
  --url 'http://myproject.app/upload' \
  --data-binary "@myfile.zip" \
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的所有方法的列表,但都失败了:


dd(file_get_contents('compress.zlib://php://input'));
Run Code Online (Sandbox Code Playgroud)

file_get_contents():不能将输入类型的流表示为文件描述符


$fh = fopen('php://input', 'rb');

stream_filter_append($fh, 'zlib.inflate', STREAM_FILTER_READ, array('window'=>15));

$data = '';

while (!feof($fh)) {
    $data .= fread($fh, 8192);
}

dd($data);
Run Code Online (Sandbox Code Playgroud)

“”


$zip = new ZipArchive;

$zip->open('php://input');
$zip->extractTo(storage_path() . '/' . 'myfile');
$zip->close();
Run Code Online (Sandbox Code Playgroud)

ZipArchive::extractTo(): 无效或未初始化的 Zip 对象

以下是我在该主题上找到的所有链接:

http://php.net/manual/en/wrappers.php#83220

http://php.net/manual/en/wrappers.php#109657

http://php.net/manual/en/wrappers.compression.php#118461

https://secure.phabricator.com/rP42566379dc3c4fd01a73067215da4a7ca18f9c17

https://arjunphp.com/how-to-unpack-a-zip-file-using-php/

我开始认为不可能使用 PHP 的内置 zip 功能对流进行操作。编写临时文件的开销和复杂性将非常令人失望。有谁知道如何做到这一点,或者这是一个错误?

php input unzip stream inflate

6
推荐指数
1
解决办法
3043
查看次数

我们如何区分deflate stream和deflateRaw流?

一些HTTP服务器发送deflate原始体(没有zlib头)而不是实际的deflate体.请参阅讨论:为什么真实世界的服务器更喜欢gzip而不是deflate编码?

是否有可能在Node.js中检测它们并正确处理膨胀?我的意思是除了尝试createInflate他们并抓住错误然后再试createInflateRaw一次.

http zlib node.js

5
推荐指数
1
解决办法
753
查看次数

标签 统计

compression ×3

gzip ×3

apache ×2

deflate ×2

php ×2

zlib ×2

http ×1

inflate ×1

input ×1

lamp ×1

node.js ×1

optimization ×1

stream ×1

unzip ×1