本文目录一览:
- 1、采用nginx+php,nginx中静态文件没有进行gzip压缩
- 2、php 怎么对url的参数串进行压缩和解压缩
- 3、php如何压缩一个文件夹里面所有的文件到zip文件里面?
- 4、使用php判断网页是否gzip压缩
- 5、php怎么对接收的图片进行压缩'
- 6、php处理字节流
采用nginx+php,nginx中静态文件没有进行gzip压缩
用nginx+php集成包phpfind或phpstudy。纯中文绿色解压即可,你试试吧,超级简单自动配好nginx+php环境
php 怎么对url的参数串进行压缩和解压缩
如果参数名和值全部是已知的,那么做一个映射表就可以了。
如果参数的值涉及用户提交的内容,对于过长的内容,最好使用POST,并开启Gzip压缩。
关于URL的长度:
1,普通用户很少通过修改url来实现跳转
2,太短的参数名称就很难理解含义,比如content如果缩短成c,你知道这代表什么意思么?
3,如果说为了便于保存和分享,那么可以考虑short url的处理方式
4,url的长度对性能的影响微乎其微,除非是超长文本,那就是程序设计的问题了
5,如果说刻意追求极短的url,还要进行压缩和解压缩步骤,真的有点画蛇添足了
php如何压缩一个文件夹里面所有的文件到zip文件里面?
//函数:文件压缩
//压缩参数:需要压缩的文件或文件夹(文件可为数组),压缩后的zip文件名及存放路径,压缩类型1:文件夹2:文件,后续操作1:压缩后下载;2:存放在服务器上(默认为/@Upload下)
//压缩文件夹示例:Tozip("./","../".date("d-H-i-s").".zip",1,2);
//压缩文件示例:
// $aaa=array("../1.txt","../2.txt");
// Tozip($aaa,"../2.zip",2);FunctionTozip($Path,
$ZipFile,
$Typ=1,
$Todo=1){//IF(!is_writeable($Path)){Exit("文件夹不可写!");}$Path=Str_iReplace("\\","/",($Path));IF(Is_Null($Path) OrEmpty($Path) Or!IsSet($Path)){ReturnFalse;}IF(Is_Null($ZipFile) OrEmpty($ZipFile) Or!IsSet($ZipFile)){ReturnFalse;}
Include_once("inc/Class_Zip.php");$zip=NewPHPZip;IF(SubStr($Path,-1,1)=="/"){$Path=SubStr($Path,0,
StrLen($Path)-1);}
OB_end_clean();Switch($Typ){Case"1":$zip-ZipDir($Path,
$ZipFile,
$Todo);Break;Case"2":$zip-ZipFile($Path,
使用php判断网页是否gzip压缩
昨天晚上群里有朋友采集网页时发现file_get_contents
获得的网页保存到本地为乱码,响应的header
里
Content-Encoding:gzip
但在浏览器里看是正常的。
因为我有过相关经验马上发现是网站开启了gzip而file_get_contents
获得的是压缩过的页面,而不是解压过的页面(不知道是不是要file_get_conttents
请求网页时带上相应的参数,直接获得没有被gzip压缩过的网页?)
刚好我前不久刚看到可以用读取文件的前2个字节判断文件类型。群里面的朋友也说gzip压缩过的网页(gbk编码)前2字节是
1F
8B
于是就可以判断网页是否gzip压缩过。
代码如下:
复制代码
代码如下:
//米尔军事网采用
gzip压缩网页
//file_get_contents
直接获得的网页是乱码。
header('Content-Type:text/html;charset=utf-8'
);
$url
=
'';
$file
=
fopen($url,
"rb");
//只读2字节
如果为(16进制)1f
8b
(10进制)31
139则开启了gzip
;
$bin
=
fread($file,
2);
fclose($file);
$strInfo
=
@unpack("C2chars",
$bin);
$typeCode
=
intval($strInfo['chars1'].$strInfo['chars2']);
$isGzip
=
0;
switch
($typeCode)
{
case
31139:
//网站开启了gzip
$isGzip
=
1;
break;
default:
$isGzip
=
0;
}
$url
=
$isGzip
?
"compress.zlib://".$url:$url;
//
三元表达式
$mierHtml
=
file_get_contents($url);
//获得米尔军事网数据
$mierHtml
=
iconv("gbk","utf-8",$mierHtml);
echo
$mierHtml;
php怎么对接收的图片进行压缩'
现在做图片上传,原图上传是成功了,但对于压缩这块,上网查了很多资料,都是对图片的宽高进行压缩
当时就觉得奇怪:宽高压缩了,图片就不是原图大小,再放大应该也会失真
我当时也怀疑是不是根本就不是用于上传,而仅仅是用于在手机屏幕上的显示而已
可查到的资料又很清楚的说明了是用于上传,于是我以为在服务器解压缩时有什么特别的方法可以让图片不失真
现在才知道改变bit.compress(Bitmap.CompressFormat.JPEG, 100, fOut);100的这个值就可以压缩KB大小,而不影响图片宽高和清晰度。
但是对于在压缩KB大小前对图片宽高进行压缩,这一点能不能解说一下是为什么呢?这样上传的图片不就跟我帖子中提到的情况一样了吗:如果后台不处理,直接保存传过来的图片,那么图片就会比原图小很多;如果后台进行放大处理,把传过来的图片放大为与原图一致,图片就会严重失真!
php处理字节流
字节流是由字节组成的,
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
字符流和字节流都是什么
流就是stream. 一个连续的字节队列。
流是程序输入或输出的一个连续的字节序列,设备(例如鼠标,键盘,磁盘,屏幕和打印机)的输入和输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现---不一定是物理磁盘文件,还可以是对应与某个输入/输出源的逻辑文件
流(streams)在I/O系统中是一种I/O机制和功能,或者称为streams子系统。它本身并不是一个物理设备的概念。
引入流的目的:
传统的字符设备驱动程序框架有许多缺点,这表现在:
。内核与字符设备驱动程序间接口的抽象层次太高
。内核没有为字符设备提供可靠的缓冲区分配和管理功能
。许多系统对字符设备的界面是把数据看成是FIFO(先进先出)的字节流,因此没有识别消息边界,区分普通设备和控制信息,以及判定不同消息优先级的能力,也没有字节流流量控制
。在网络数据传输设备中这些问题更突出。网络中数据传输是基于消息或数据分组的。
流的概念:
用通讯中的术语来说,流是全双工的处理过程,它是内核中驱动程序和用户进程之间的数据传输通道。
从流的构造上来说,它由一个流头,一个流驱动程序尾,以及其间的零个或若干个可选模块构成 。流头是一个用户级接口,它允许用户应用程序通过系统调用接口来访问流。驱动程序尾与底层设备通信。在流的中间的模块是处理数据的。
字节流与字符流主要的区别是他们的的处理对象
字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的lang
流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。