ssi靜態包含技術總結

先摘抄網上常見的關於SSI的介紹。

SSI的工作原理將內容發送到瀏覽器之前,可以使用“服務器端包含(SSI)”指令將文本、圖形或應用程序信息包含到網頁中。
SSI技術的功用:可以有效的將HTML網頁和CGI腳本邏輯上分開,也可以將重複的HTML元素抽象和獨立出來,減輕維護負擔。

通過上面的介紹,我們並不能知道SSI到底是什麼,是用來做什麼的。


我用淺顯的語言總結一下:
假如我們要做一個需要生成靜態頁面的資訊網站,有大量的資訊,並且數據量一直往上升。
資訊內容頁的右側有2個動態欄目:推薦閱讀和閱讀排行。
面臨的問題是,這兩個欄目更新頻率較大,當每次更新的時候,所有的資訊內容頁面都要重新生成一次。這顯然是不現實的。(時間漫長,消耗服務器資源)
而SSI靜態包含技術就能解決這樣的問題。我們不需要重新生成靜態頁面,就能完成動態內容的更新。
總而言之,就是SSI能讓靜態HTML頁面包含動態內容。
網絡上有很多文章介紹,各大門戶都採用了這種技術。從他們常用的.shtml後綴能窺一斑。

那我們如何使用這種技術?很簡單,我們只要在服務器端做好相應的配置就能使用,apache,iis,nginx都能支持。其實,就是更改web服務器軟件的配置,開啓相應的模塊。

使用:(針對win32版apache)
1:在httpd.conf中找LoadModule include_module modules/mod_include.so,如果是註釋狀態,就去掉#。
如果沒有,就將這段複製上去。
2:使.shtml/.html擴展名的文件啓用ssi,去掉下面的註釋。
#AddType text/html .html
#AddOutputFilter INCLUDES .html
要想支持.shtml後綴,把.html改成.shtml即可。
也可以直接在.html加上.shtml(記得空格分隔),這樣ssi同時支持兩種後綴。
3:找到主機DOCUMENT_ROOT目錄配置下 Options Indexes FollowSymLinks 修改爲: Options Indexes FollowSymLinks Includes
存盤,重啓apache。

這樣,在靜態頁面中的<!–#include file=”footer.html” –><!–#include virtual=”my.php” –>會將包含的內容載入進來。

例:
ssi.html
<!–#include file=”header.php” –>
我是靜態ssi包含技術
<!–#include virtual=”../../my.php” –>
<!–#include virtual=”/footer.html” –>
建立文件header.php my.php footer.html,測試在靜態的ssi.html頁面中,其他文件的內容是如何包含進來的。

注意file和virual的區別:
include元素能按file屬性或virtual屬性判斷應該包含的文件。
file屬性是一個相對於當前目錄的文件路徑,即不能是一個絕對路徑(以”/”開頭)或包含”../”的路徑。
virtual屬性更有用,它是一個相對於被提供的文檔的URL ,可以以”/”開頭,但必須與被提供的文檔位於同一服務器上。

在apache手冊裏,對於ssi有更詳細的介紹。但是掌握上面的東西,足夠解決靜態頁面動態內容的問題。
生成靜態頁面耗費服務器資源,耗費時間,某個頁面生成可能失敗。如何以一個更好的策略或者機制,生成靜態頁面?特別是頁面特別多的時候。這可能是比較麻煩的問題。

本文鏈接:http://www.ling01.com/post/ssi.html
如非特殊說明,本站文章均由作者Cookie Chen原創,轉載請註明作者及來源!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章