Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構

3.3. 靜態化

靜態化方法包括:

  1. 生成方式

  2. 抓取方式

  3. 偽靜態化

  4. 混合方式

靜態化可以改善SEO

3.3.1. 生成方式

主要由程序實現

例如

			
content = "<html><title>my static</title><body>hello world</body></html>"
file = open( your static file)
file.write(content)
file.close()
			
			

3.3.2. 抓取方式

主要由程序實現

程序中抓取

			
content = get_url('http://netkiller.8800.org/index.php')
file = open( index.html)
file.write(content)
file.close()
			
			

使用軟件抓取,不僅限于wget。

			
wget http://netkiller.8800.org/index.php -O index.html
			
			

這時只給出簡單例子,使用複雜參數實現更複雜的拾取,然後將腳本加入crontab中可。

3.3.3. 偽靜態化

偽靜態化是主要是通過在URL上做一些手腳,使你看去是靜態的,實質上它是動態腳本。

偽靜態化實現主要包括兩種方法:

  1. Rewrite rule

  2. path_info

下面是一個PATH_INFO例子

http://netkiller.8800.org/zh-cn/photography/browse/2009.html

根本就不存在這個目錄'zh-cn/photography/browse/'和檔案'2009.html'

下面是一個Rewrite例子

http://example.org/bbs/thread-1003872-1-1.html

3.3.4. 混合方式

其實目前網站使用的基本上都是上面幾種方法混合方式。

例如首先將動態url(example.org/news.php?cid=1&id=1) 通過rewrite轉換為 (example.org/new_1_1.html)

接下來就比較容易解決了,一種方法是使用wget example.org/new_1_1.html,另一種方法你無需靜態化,直接使用squid規則配置讓他永不過期

3.3.5. 靜態化中的動態內容

在靜態化頁面中有一些內容是無法實現靜態的。像登錄信息,用戶評論等等

我們用三種方法實現靜態中嵌入動態內容:

  1. iframe - 靈活性差

  2. SSI - 消耗web伺服器資源

  3. Ajax - 依賴瀏覽器,穩定性差