2013-02-22 94 views
2

比方說,我想用php在我的網站上生成動態數據,但我不希望用戶去任何.php頁面。從PHP保存HTML

相反,我想每晚運行一次php腳本並保存一個.html文件,以便瀏覽我的網站時用戶只需看到靜態html。

我想象的方式是每個需要動態數據的頁面都有一個.html和一個.php文件。例如:

  • newsAndInformation.html
  • newsAndInformation.php

這是常見的做法?那裏有很好的教程嗎?

+1

您可以編輯'.htaccess'。 – hjpotter92 2013-02-22 17:31:34

+4

這就是所謂的靜態緩存。您可以使用ob_start和ob_get_contents來獲取您生成的代碼並將其放入靜態文件中。您可以使用htaccess來檢查是否存在靜態文件,並在靜態文件存在並且年齡小於xx天時提供靜態文件..這僅僅是一個簡單的例子。 – 2013-02-22 17:31:59

+1

這是因爲你想緩存一些東西還是因爲你想讓它看起來像一個HTML頁面? 因爲有了URL重寫,你可以讓url'/ anypage.html' 指向'anypage.php'而沒有任何人意識到它。 – cIph3r 2013-02-22 17:34:05

回答

4

您可以通過在.htaccess文件中使用巧妙的mod_rewrite規則speed up your site with static pages

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^Example/ index.php [L,NC,QSA] 

此規則執行以下操作...

  1. 檢查該文件不存在請求的URL

  2. 檢查一個目錄不存在的請求的URL

  3. 如果是 - 顯示靜態文件/目錄(目錄需要一個index.html文件)

  4. 如果NO - 重定向到您的PHP文件,它可以運行並保存相應的文件下一個請求

你的PHP文件將吐出的響應:

<?php 
ini_set('zlib.output_compression', 'On'); 

ob_start(); 

// Logic to create your content... 

// use ob_get_contents() to get the response and save it 

ob_end_flush(); 
?> 

一粗略的例子將是...

yoursite/Example/Test/ 

在第一次訪問,這將打你的PHP頁面。然後,您將文件保存到/Example/Test/index.html,第二個請求將在不使用PHP的情況下爲靜態頁面提供服務。

+0

+1不錯!您需要添加類似cron作業的內容來每天清理一次html文件,以滿足OP的刷新要求。 – jeroen 2013-02-22 17:41:06

+0

我通常會在編輯頁面時自動刪除該文件夾,因此如果實際進行了更改,它只會重新生成靜態文件。對於需要真正動態(即基於未來日期的自動發佈)的頁面,我使用較小的PHP文件來處理緩存,該文件檢查緩存項目的日期和時間。 – Fenton 2013-02-22 17:42:53

+0

性感!我會嘗試一下。 – 2013-02-22 17:45:09

0

你可以創建一個簡單的類,使用fwrite來做到這一點。

如果您有足夠的數據需要更復雜的解決方案,您可以找到更廣泛的緩存系統。

0

添加在.htaccess文件中的以下

RewriteEngine on 
RewriteRule ^(.*)\.html $1\.php 

這將使http://www.domain.com/myPage.html真正指向http://www.domain.com/myPage.php但用戶看到.html