php緩衝並壓縮動態網頁面的方法介紹

來源:互聯網
上載者:User
  1. void ob_start(void);
  2. ?>
複製代碼

告訴PHP處理器把所有的輸出重新導向到一個內部的緩衝(buffer)中。在調用ob_start之前,沒有輸出會被送到瀏覽器去。

  1. string ob_get_contents(void);
  2. ?>
複製代碼

該函數將“輸出緩衝”(output buffer)以字串的形式返回。你可以調用該函數把積累下來的輸出送到瀏覽器中。(僅在把buffering功能關閉之後!!)

  1. int ob_get_length(void);
  2. ?>
複製代碼

返回緩衝中的字串的長度。

  1. void ob_end_clean(void);
  2. ?>
複製代碼

清空輸出緩衝,並將輸出緩衝關閉。在緩衝中的內容輸出到瀏覽器之前,必須使用這個函數。void 501([int flag])用來開啟/關閉隱含的flush動作開關(預設是關)。如果flush是開的,每次調用print/echo或是其它輸出命令的時候,輸出的內容會被立即送到瀏覽器端。

使用輸出控制來壓縮PHP輸出你必須使用PHP4裡編譯的Zlib擴充包來壓縮輸出。如果需要的話,可以查看PHP文檔中有關Zlib包的安裝指導。首先,初始化輸出緩衝:

  1. ob_start();
  2. ob_implicit_flush(0);
  3. ?>
複製代碼

之後,用print, echo, 或其他你喜歡的方法產生所有輸出內容,例如:

  1. print("Hey this is a compressed output!");
  2. ?>
複製代碼

頁面產生後,我們取回輸出內容:

  1. $contents = ob_get_contents();
  2. ob_end_clean();
  3. ?>
複製代碼

之後,必須檢測瀏覽器是否支援壓縮資料。如果支援,瀏覽器會發給伺服器端一個ACCEPT-ENCODEING HTTP頭。我們只需檢查$HTTP_ACCEPT_ENCODING變數中是否有“gzip,deflate”字串。

  1. if(ereg('gzip, deflate',$HTTP_ACCEPT_ENCODING)) {
  2. // 在這裡產生 Gzip 壓縮的內容
  3. } else {
  4. echo $contents;
  5. }
  6. ?>
複製代碼

這種方法使用起來既簡單又結構清晰。 1 2 下一頁 尾頁

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.