php靜態快取簡單製作

2022-04-01 20:19:08 字數 2279 閱讀 4156

製作快取的目的是為了讓我們的頁面執行更加快速,減少讀取資料庫內容的次數,給使用者更好的體驗,為此我們可以使自己的程式做一下快取,並且設定乙個快取過期的時間,來保證與資料庫的一致,當然並不是所有的程式都適合做快取,這裡簡單介紹一下php靜態快取製作的方法:

1.首先我們要定好乙個快取檔案存放的位置,即存放目錄(李昌輝)

例如我這裡存放在cache目錄下,將來所有的快取檔案都放到該目錄下

2.在要做靜態快取的頁面,我們定義乙個變數來存放乙個快取檔案的路徑(相對於當前頁面的路徑)

$filename = "./cache/test.html";
3.定義乙個變數來儲存快取過期時間

$cachetime = 5;
4.判斷一下,快取檔案是否存在或者是否過期,如果快取檔案不存在就執行源**生成快取,或者時間過期了也應該重新快取一下,如果上述條件不滿足則呼叫快取頁面顯示。

if(!file_exists($filename) || filemtime($filename)+$cachetime5.生成快取,在頁面輸出內容之前,我們呼叫ob_start()方法開啟記憶體緩衝區,將要輸出的內容放到記憶體裡面。

ob_start();

6.在頁面輸出完之後,將記憶體中獲取到的內容儲存下來,存為乙個靜態頁面。

//從記憶體快取中獲取頁面**

$content = ob_get_contents();

//將獲取到的內容存放到快取檔案

file_put_contents($filename,$content);

//清掉記憶體快取

ob_flush();

7.最後我們加上一段輸出,來測試是否重新快取了,如果頁面有輸出該內容代表重新生成了快取檔案,如果沒有,說明是直接讀的快取檔案

echo "######################################";  //測試是否呼叫了快取檔案,快取檔案不輸出這句話
這樣我們就簡單做了乙個靜態快取,完整**如下:

<?php 

$filename = "./cache/test.html";

//定義快取有效期

$cachetime = 5;

//判斷快取檔案是否存在

if(!file_exists($filename) || filemtime($filename)+$cachetime

代號名稱

**產地

庫存操作

<?php

//造連線物件

$db = new mysqli("localhost","root","123","mydb");

//寫sql語句

$sql = "select * from fruit";

//執行

$result = $db->query($sql);

//取資料

/*$attr = $result->fetch_all();

foreach($attr as $v) ";

}*/while($attr = $result->fetch_row()) 刪除

修改"; }

?>

新增資料

<?php

//從記憶體快取中獲取頁面**

$content = ob_get_contents();

//將獲取到的內容存放到快取檔案

file_put_contents($filename,$content);

//清掉記憶體快取

ob_flush();

echo "######################################"; //測試是否呼叫了快取檔案,快取檔案不輸出這句話

}else

?>

最後來看一下,效果:

第一次執行該頁面,出現快取:

再次執行,則沒有重新建立快取,而是直接讀取的靜態頁面test.html:

過了一段時間,又重新生成了快取,這個時間就是我們之前設定的快取過期時間。

PHP快取靜態

三大快取技術 瀏覽器快取 瀏覽器接收伺服器返回的資料,每接收到一定的資料量,才展示到頁面.程式快取 php語言在執行過程中,每次產生的輸出,都先存放在程式快取空間,當整個程式執行結束,再返回給apache或nginx 最後返回到瀏覽器,程式快取是語言底層實現的,開發者無法操控和感知。ob快取 php...

PHP 靜態快取

今天來說說php頁面的靜態快取。根據個人理解,由於客戶端重複的請求某個頁面,導致該頁面短時間內被重複請求相同的資料,導致給服務端一定的壓力,同時使用者訪問速度也會變慢。此時如果把這個頁面快取起來,客戶端請求這個快取頁面速度就很快,都不用查詢資料庫的。並不是每個頁面都適合做快取,頁面要保證短時間內請求...

php快取 靜態頁面

大家會問什麼是快取!能幹什麼!其實快取相當於記憶體。儲存一段時間!快取就是我們執行東西時候不用在執行資料庫了。直接執行我們的快取就ok了 一般來說,快取的目的是把資料放在乙個地方讓訪問的更快點,毫無疑問,記憶體是最快的,但是,幾百m的資料能往記憶體 放麼?這不現實,當然,有的時候臨時放如伺服器快取,...