網頁靜態化博文目錄

1、ob緩存php

ob的基本原則:若是ob緩存打開,則echo的數據首先放在ob緩存。若是是header信息,直接放在程序緩存。當頁面執行到最後,會把ob緩存的數據放到程序緩存,而後依次返回給瀏覽器。html

ob的基本做用:瀏覽器

1) 防止在瀏覽器有輸出以後再使用setcookie()、header()或session_start()等發送頭文件的函數形成的錯誤。其實這樣的用法少用爲好,養成良好的代碼習慣。
2) 捕捉對一些不可獲取的函數的輸出,好比phpinfo()會輸出一大堆的HTML,可是咱們沒法用一個變量例如$info=phpinfo();來捕捉,這時候ob就管用了。
3) 對輸出的內容進行處理,例如進行gzip壓縮,例如進行簡繁轉換,例如進行一些字符串替換。
4) 生成靜態文件,其實就是捕捉整頁的輸出,而後存成文件。常常在生成HTML,或者整頁緩存中使用。緩存

 

一、開啓cookie

//此函數將打開輸出緩衝。當輸出緩衝激活後,腳本將不會輸出內容(除http標頭外),相反須要輸出的內容被存儲在內部緩衝區中。
ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] ) : bool
<?php

function callback($buffer)
{
  // replace all the apples with oranges
  return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");

?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php

ob_end_flush();

?>

 

二、獲取內容session

//只是獲得輸出緩衝區的內容,但不清除它。
ob_get_contents ( void ) : string
//Level 0
ob_start();
echo "Hello ";

//Level 1
ob_start();
echo "Hello World";
$out2 = ob_get_contents();
ob_end_clean();

//Back to level 0
echo "Galaxy";
$out1 = ob_get_contents();
ob_end_clean();

//Just output
var_dump($out1, $out2);
//獲得當前緩衝區的內容並刪除當前輸出緩衝區。
ob_get_clean ( void ) : string
//刷出(送出)緩衝區內容,以字符串形式返回內容,並關閉輸出緩衝區。
ob_get_flush ( void ) : string

 

三、清空數據app

//此函數用來丟棄輸出緩衝區中的內容。
ob_clean ( void ) : void
//清空(擦除)緩衝區並關閉輸出緩衝
ob_end_clean ( void ) : bool

四、刷新函數

//沖刷出(送出)輸出緩衝區中的內容
ob_flush ( void ) : void
// 沖刷出(送出)輸出緩衝區內容並關閉緩衝
ob_end_flush ( void ) : bool
//刷出(送出)緩衝區內容,以字符串形式返回內容,並關閉輸出緩衝區。
ob_get_flush ( void ) : string

 

五、關閉spa

// 沖刷出(送出)輸出緩衝區內容並關閉緩衝
ob_end_flush ( void ) : bool
//清空(擦除)緩衝區並關閉輸出緩衝
ob_end_clean ( void ) : bool

簡單案例:code

<?php
/**
 * Created by PhpStorm.
 * User: 25754
 * Date: 2019/8/31
 * Time: 9:46
 */

$file = "./index/index.html";

if (file_exists($file) && filemtime($file) + 10 > time()) {
    echo "輸出緩存內容";

    include "./index/index.html";
} else {
    //開啓ob緩存
    ob_start();
    include "./tmp.html";
    //獲取緩衝區內容
    $content = ob_get_contents();
    file_put_contents("./index/index.html", $content);

    //發送內部緩衝區的內容到瀏覽器,而且關閉輸出緩衝區
    ob_end_flush();
}
相關文章
相關標籤/搜索