[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的解決辦法,使得資料庫無法利用索引,導致效能急劇下降。這次我將使用我的某客戶的真實資料來演示 已確認不涉及資訊保安...