很多人都以為 WebAMP 只能給靜態網頁使用,動態網頁無法得到任何加速效果
但其實只要程式設計得宜,動態網頁也有可能可以享受到 WebAMP 的網站超頻加速的效果喔
以下我們用一個簡單的例子來說明:
首先,我們先看這個原始圖片,大小約為 1.4 MBytes:
http://bbs.giga.net.tw/demo/Peacock.jpg
由於這個檔案是靜態檔案,因此理所當然會被 WebAMP 加速 (HIT),我們用 wget 來驗證看看:
# wget -v -S 'http://bbs.giga.net.tw/demo/Peacock.jpg' --10:07:00-- http://bbs.giga.net.tw/demo/Peacock.jpg => `Peacock.jpg' Resolving bbs.giga.net.tw... done. Connecting to bbs.giga.net.tw[203.187.29.180]:80... connected. HTTP request sent, awaiting response... 1 HTTP/1.0 200 OK 2 Date: Sat, 12 Mar 2005 15:25:22 GMT 3 Server: Apache/2.0.52 (FreeBSD) PHP/5.0.3 4 Last-Modified: Tue, 18 May 2004 08:53:23 GMT 5 ETag: "51b65-1680be-12ff86c0" 6 Accept-Ranges: bytes 7 Content-Length: 1474750 8 Content-Type: image/jpeg 9 Age: 259658 10 X-Cache: HIT from WebAmpRP@GIGAMEDIA 11 Connection: close 100%[====================================>] 1,474,750 974.42K/s
接下來,我們測試一下用程式來動態輸出這個圖片,首先我們寫了一支 PHP 程式:
<? # http://bbs.giga.net.tw/demo/dl-test1.php $filename = 'Peacock.jpg'; header( 'Content-Type: application/octet-stream' ); header( 'Content-Length: ' . filesize($filename) ); header( 'Content-Transfer-Encoding: binary' ); header( 'Content-Disposition: attachment; filename="'.$filename.'"' ); $fp = fopen( $filename, 'rb' ); while( !feof($fp) ) { echo fread( $fp, 1024 ); } fclose($fp); ?> |
然後,我們用 wget 測試幾次看看:
# wget -v -S 'http://bbs.giga.net.tw/demo/dl-test1.php' --10:14:29-- http://bbs.giga.net.tw/demo/dl-test1.php => `dl-test1.php' Resolving bbs.giga.net.tw... done. Connecting to bbs.giga.net.tw[203.187.29.180]:80... connected. HTTP request sent, awaiting response... 1 HTTP/1.0 200 OK 2 Date: Mon, 01 Aug 2005 02:14:33 GMT 3 Server: Apache/2.0.54 (FreeBSD) PHP/5.0.4 4 X-Powered-By: PHP/5.0.4 5 Content-Length: 1474750 6 Content-Transfer-Encoding: binary 7 Content-Disposition: attachment; filename="Peacock.jpg" 8 Content-Type: application/octet-stream 9 X-Cache: MISS from WebAmpRP@GIGAMEDIA 10 Connection: close 100%[====================================>] 1,474,750 325.21K/s
我們會發覺不管測試幾次,都會是 MISS 的情形!
接下來,我們稍微修改一下程式,加上 Last-Modified: 的 HTTP header …
<? # http://bbs.giga.net.tw/demo/dl-test2.php $filename = 'Peacock.jpg'; header( 'Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($filename) ) . ' GMT'); header( 'Content-Type: application/octet-stream' ); header( 'Content-Length: ' . filesize($filename) ); header( 'Content-Transfer-Encoding: binary' ); header( 'Content-Disposition: attachment; filename="'.$filename.'"' ); $fp = fopen( $filename, 'rb' ); while( !feof($fp) ) { echo fread( $fp, 1024 ); } fclose($fp); ?> |
上面 filemtime($filename) 主要是拿檔案的修改時間來當作 Last-Modified: 時間,不過要用 gmdate() 把 UNIX Timestamp 轉換成 GMT 格林威治時區的時間
加了上面 Last-Modified 這一行之後,我們再來測試一下:
% wget -v -S 'http://bbs.giga.net.tw/demo/dl-test2.php' --09:56:23-- http://bbs.giga.net.tw/demo/dl-test2.php => `dl-test2.php' Resolving bbs.giga.net.tw... done. Connecting to bbs.giga.net.tw[203.187.29.180]:80... connected. HTTP request sent, awaiting response... 1 HTTP/1.0 200 OK 2 Date: Mon, 01 Aug 2005 01:56:25 GMT 3 Server: Apache/2.0.54 (FreeBSD) PHP/5.0.4 4 X-Powered-By: PHP/5.0.4 5 Last-Modified: Tue, 18 May 2004 08:53:23 GMT 6 Content-Length: 1474750 7 Content-Transfer-Encoding: binary 8 Content-Disposition: attachment; filename="Peacock.jpg" 9 Content-Type: application/octet-stream 10 X-Cache: MISS from WebAmpRP@GIGAMEDIA 11 Connection: close 100%[====================================>] 1,474,750 350.20K/s
第一次當然還是 MISS,不過第二次以後就都是 HIT 了
# wget -v -S 'http://bbs.giga.net.tw/demo/dl-test2.php' --09:56:26-- http://bbs.giga.net.tw/demo/dl-test2.php => `dl-test2.php' Resolving bbs.giga.net.tw... done. Connecting to bbs.giga.net.tw[203.187.29.180]:80... connected. HTTP request sent, awaiting response... 1 HTTP/1.0 200 OK 2 Date: Mon, 01 Aug 2005 01:56:25 GMT 3 Server: Apache/2.0.54 (FreeBSD) PHP/5.0.4 4 X-Powered-By: PHP/5.0.4 5 Last-Modified: Tue, 18 May 2004 08:53:23 GMT 6 Content-Length: 1474750 7 Content-Transfer-Encoding: binary 8 Content-Disposition: attachment; filename="Peacock.jpg" 9 Content-Type: application/octet-stream 10 Age: 4 11 X-Cache: HIT from WebAmpRP@GIGAMEDIA 12 Connection: close 100%[====================================>] 1,474,750 950.12K/s
以上是以圖片作例子,你也可以代換成要被下載的檔案 (有些人會用這種方式來計算檔案被下載的次數)
甚至,討論區的文章如果能被正確貼上 Last-Modified: 的 header,也有可能可以享受到 WebAMP 加速的好處喔
更進一步的資訊,請參考下一篇「動態網頁也可以被快取喔! (Part II)」
tierbilder loewe
bwqo f ? kb 98