这两种方法为LAMP服务器提供的html,css和javascript文件提供了哪些优势.还有更好的选择吗?
服务器使用Json向地图应用程序提供信息,因此大量的小文件.
zOompf已经完成了这个题目了一些非常深入的研究在这里.它胜过下面的任何发现.
一些背景信息的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会有什么缺点?
大多数网站都希望压缩其内容以节省带宽.但是,对于运行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://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 功能对流进行操作。编写临时文件的开销和复杂性将非常令人失望。有谁知道如何做到这一点,或者这是一个错误?
一些HTTP服务器发送deflate原始体(没有zlib头)而不是实际的deflate体.请参阅讨论:为什么真实世界的服务器更喜欢gzip而不是deflate编码?
是否有可能在Node.js中检测它们并正确处理膨胀?我的意思是除了尝试createInflate他们并抓住错误然后再试createInflateRaw一次.