為什麼php動態語言,動態語言靜態化

2021-10-25 20:40:12 字數 1498 閱讀 6386

[toc]

## 什麼是動態語言靜態化

將現有php等動態語言的邏輯**生成為靜態html檔案,使用者訪問動態指令碼重定向到靜態html檔案的過程。

對實時性要求不高的頁面

## 為什麼要靜態化

動態指令碼通常會做邏輯計算和資料查詢,訪問量越大,伺服器壓力越大

訪問量大時可能會造成cpu負載過高,資料庫伺服器壓力過大

## 靜態化的實現方式

### 使用模板引擎

可以使用 smarty的快取機制生成靜態html快取檔案

$smarty-> cache dir=$root."/ cache";/快取目錄

$smarty-> caching=true;//是否開啟快取

$smarty-> cache_lifetime="3600";/快取時間

$smarty-> display(string template, string cache_id[, string compile_id]]):

$smarty-> clear_all_cache();//清除所有快取

$smarty-> clear_cache(" file.html");/清除指定的快取

$smarty-> clear_cache( 'article.htm',$art_id);//清除同乙個模板下的指定快取號的快取

### 利用ob系列的函式

ob_start():開啟輸出控制緩衝

ob_get_contents0:返回輸出緩衝區內容

ob_clean():清空輸出緩衝區

ob_end_flush0:沖刷出(送出)輸出緩衝區內容並關閉緩衝

ob_start():

//輸出到頁面的html**

ob_get_contents();

ob end flush();

fopen(); //寫入

實現頁面靜態化,並且當內容改變時,主動快取新內容,且如果有$_ get引數時候,帶引數的靜態化頁面

$id = $_get['id'];

if (empty($id)) {

$id = '';

$cache_name = md5(__file__) . '-' . $id . '.html';

$cache_lifetime = 3600;

if (@filectime(__file__) <= @filectime($cache_name) && file_exists($cache_name) && $cache_lifetime+@filectime($cache_name) > time()) {

include $cache_name;

exit;

ob_start();

this is my script <?php echo $id; ?>

$content = ob_get_contents();

ob_end_flush();

file_put_contents($cache_name, $content);

什麼是「動態語言「

經過反覆的查詢,終於找到了幾個解釋,我現在把這些解釋歸納出來。所謂 動態語言 也叫指令碼語言,就是說一種在執行期間才去發現資料型別的程式語言,主要建立一些需要經常更新的動態系統。這就是動態語言的定義,聽起來還是夠明確吧。以往,我們所使用的語言,比如c,c 等等,都稱為靜態語言。什麼是靜態語言呢?就是...

什麼是靜態語言,什麼是動態語言?

定義 通常我們所說的動態語言 靜態語言指 動態型別語言 dynamically typed language 和 靜態型別語言statically typed language 還有乙個 dynamic programming language 動態程式語言 靜態程式語言。動態型別語言 在執行期間檢...

動態sql 為什麼需要動態SQL

在使用ef或者寫sql語句時,查詢條件往往是這樣一種非常常見的邏輯 如果客戶填了查詢資訊,則查詢該條件 如果客戶沒填,則返回所有資料。我常常看到很多人解決這類問題時使用了錯誤的靜態sql的解決辦法,使得資料庫無法利用索引,導致效能急劇下降。這次我將使用我的某客戶的真實資料來演示 已確認不涉及資訊保安...