本文目錄一覽:
- 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等多媒體文件解壓後進行播放和觀看。此時多媒體文件的剩餘部分將在後台的服務器內繼續下載。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/304368.html