技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

php通過(guò)ini_set調(diào)用output_compression壓縮網(wǎng)頁(yè)

作者:admin    時(shí)間:2012-10-23 15:11:36    瀏覽:

網(wǎng)頁(yè)壓縮是一種網(wǎng)頁(yè)優(yōu)化技術(shù),可以讓網(wǎng)頁(yè)體積縮小后再傳輸?shù)娇蛻舳?,從而減少數(shù)據(jù)傳送量,提高速度。這種技術(shù)現(xiàn)在使用已經(jīng)相當(dāng)普遍,絕大多數(shù)網(wǎng)頁(yè)都使用了這種技術(shù)。

網(wǎng)頁(yè)壓縮可以在服務(wù)器或空間里通過(guò)參數(shù)設(shè)置啟用或關(guān)閉,這個(gè)設(shè)置是對(duì)網(wǎng)站所有頁(yè)面有效的,操作起來(lái)并不復(fù)雜。

如果你想單獨(dú)操作某個(gè)頁(yè)面,使用或不使用壓縮,在php里也可以輕松實(shí)現(xiàn)。

ini_set調(diào)用zlib.output_compression壓縮網(wǎng)頁(yè)

下面是實(shí)例代碼:

<?php ini_set('zlib.output_compression', 'Off'); ?>

或 

<?php ini_set('zlib.output_compression', 'On'); ?>

只需在網(wǎng)頁(yè)的開頭加上上述的一行代碼即可。

加上代碼后,可以立即檢測(cè)網(wǎng)頁(yè)gzip壓縮是否設(shè)置有效了。

剛才說(shuō)到,可以通過(guò)全局設(shè)置來(lái)控制整個(gè)網(wǎng)站所有網(wǎng)頁(yè)啟動(dòng)或關(guān)閉網(wǎng)頁(yè)壓縮的功能,各種web服務(wù)器的具體設(shè)置操作可以看這里:網(wǎng)站啟用GZip壓縮后,速度快了3倍!

在一些案例中發(fā)現(xiàn),ini_set調(diào)用zlib.output_compression設(shè)置為“on”后,php不發(fā)送Content-type header,從而導(dǎo)致網(wǎng)頁(yè)輸出內(nèi)容不完整。在這種情況下,可以通過(guò)設(shè)置buffer size來(lái)代替。

下面是實(shí)例代碼:

<?php
ini_set("zlib.output_compression", 4096);
?>

ob_gzhandler也能實(shí)現(xiàn)網(wǎng)頁(yè)壓縮

壓縮網(wǎng)頁(yè),ob_gzhandler也能實(shí)現(xiàn),不過(guò)效率沒有zlib.output_compression高,請(qǐng)參考文章《zlib.output_compression比ob_gzhandler效率高》。

知識(shí)擴(kuò)展

ini_set的用法

描述

string ini_set ( string $varname , string $newvalue )

設(shè)置配置項(xiàng)的值。配置選項(xiàng)將在腳本的執(zhí)行時(shí)使用這個(gè)新的值,直到該腳本執(zhí)行結(jié)束。

參數(shù)

varname
并非所有可用的選項(xiàng)都可以通過(guò)ini_set ()來(lái)修改。

newvalue
新值的選項(xiàng)。

返回值
成功則返回舊值,失敗返回FALSE。

實(shí)例

<?php
echo ini_get('display_errors');
if (!ini_get('display_errors')) {
    ini_set('display_errors', 1);
}
echo ini_get('display_errors');
?>

注意

1.php.ini文件中,并不是所有的設(shè)置項(xiàng)都是以integer型存儲(chǔ)的,比如upload_max_filesize項(xiàng)就是以簡(jiǎn)寫形式( shorthand notation)存儲(chǔ)的,因此直接用ini_get()并不能獲得正確的值,可以調(diào)用return_bytes()函數(shù)進(jìn)行轉(zhuǎn)換。

2.并不是所有的available options都可以通過(guò)ini_set()函數(shù)來(lái)修改。具體哪些可以通過(guò)ini_set()函數(shù)來(lái)修改,參見http://www.php.net/manual/zh/ini.list.php

如下圖所示:

其中“可修改范圍”的定義如下表:

因此,像post_max_size、upload_max_filesize用下面的方法是修改不了的。

[php] view plaincopyprint?
ini_set('post_max_size','1024M'); 
ini_set('upload_max_filesize','1024M'); 
ini_set('post_max_size','1024M');
ini_set('upload_max_filesize','1024M');

正確做法是用.htaccess文件:

[c-sharp] view plaincopyprint?
php_value upload_max_filesize 50M 
php_value post_max_size 100M 
php_value upload_max_filesize 50M
php_value post_max_size 100M

前提是該站點(diǎn)在httpd.conf中配置了:AllowOverride All 。

您可能對(duì)以下文章也感興趣

ini_set()解決圖片上傳時(shí)出現(xiàn)內(nèi)存不足的問(wèn)題。

標(biāo)簽: ini_set  
相關(guān)文章
    x
    • 站長(zhǎng)推薦
    /* 左側(cè)顯示文章內(nèi)容目錄 */