靜態頁面、動態頁面和僞靜態頁面的區別以及實現方法

1.靜態頁面html

  優勢:相對於其餘兩種頁面(動態頁面和僞靜態頁面),速度最快,並且不須要從數據庫裏面提取數據,速度快的同時,也不會對服務器產生壓力。java

  缺點:因爲數據都是存儲在HTML裏面,因此致使文件很是大。而且最嚴重的問題是,更改源代碼必須所有更改,而不能改一個地方,全站靜態頁面就自動更改了。若是是大型網站有較多的數據,那會佔用大量的服務器空間,每次添加內容都會生成新的HTML頁面。若是不是專業人士維護比較麻煩。web

 動態頁面靜態化:數據庫

 1 /**
 2  * 動態頁面靜態化
 3  */
 4 public class GoToHtml {
 5     
 6     private static String title ="我是標題";
 7     private static String h1 ="我是 H1 標籤";
 8     private static String h2 ="我是 H2 標籤";
 9     private static String h3 ="我是 H3 標籤";
10     private static String h4 ="我是 H4 標籤";
11     private static String h5 ="我是 H5 標籤";
12 
13     /**
14      * 根據本地模板生成靜態頁面
15      * 
16      * @param filePath HTML 模版路徑
17      * @param HtmlFile HTML 保存路徑
18      * @return
19      */
20     public static boolean toHtmlFile(String filePath, String HtmlFile) {
21         String str = "";
22         try {
23             String tempStr = "";
24             FileInputStream is = new FileInputStream(filePath);// 讀取模塊文件
25             BufferedReader br = new BufferedReader(new InputStreamReader(is));
26             while ((tempStr = br.readLine()) != null)
27                 str = str + tempStr;
28             is.close();
29         } catch (IOException e) {
30             e.printStackTrace();
31             return false;
32         }
33         try {
34             // 替換掉模塊中相應的地方
35             str = str.replaceAll("###title###", title);
36             str = str.replaceAll("###h1###", h1);
37             str = str.replaceAll("###h2###", h2);
38             str = str.replaceAll("###h3###", h3);
39             str = str.replaceAll("###h4###", h4);
40             str = str.replaceAll("###h5###", h5);
41             File f = new File(HtmlFile);
42             BufferedWriter o = new BufferedWriter(new FileWriter(f));
43             o.write(str);
44             o.close();
45         } catch (IOException e) {
46             e.printStackTrace();
47             return false;
48         }
49         return true;
50     }
51 
52     public static void main(String[] args) {
53         long startTime = System.currentTimeMillis();   //獲取開始時間
54         SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
55         String newFileName = df.format(new Date());
56         toHtmlFile("d:/b.html", "d:/" + newFileName + ".html");
57         long endTime = System.currentTimeMillis();   //獲取結束時間
58         System.out.println("程序運行時間: " + (endTime - startTime) + "ms");
59     }
60 }

模塊文件代碼:瀏覽器

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>###title###</title>
 5 </head>
 6 <body>
 7     <h1>###h1###</h1>
 8     <h2>###h2###</h2>
 9     <h3>###h3###</h3>
10     <h4>###h4###</h4>
11     <h5>###h5###</h5>
12 </body>
13 </html>

因而便能生成靜態頁面了。緩存

 

2.動態頁面服務器

  優勢:空間使用量很是小,通常幾萬條數據的網站,使用動態頁面,可能只有幾M的文件大小,而使用靜態頁面少則十幾M,多則幾十M甚至更多。由於數據庫是從數據庫裏面調出來的,若是須要修改某些值,直接更改數據庫,那麼全部的動態網頁,就會自動更新了。這一點相比靜態頁面優勢就顯而易見了。app

  缺點:用戶訪問速度較慢,爲何會訪問動態頁面較慢呢?這個問題要從動態頁面的訪問機制提及了,其實咱們的服務器上面有一個解釋引擎,當用戶訪問的時候,這個解釋引擎就會把動態頁面翻譯爲靜態頁面,這樣你們就可以在瀏覽器裏面查看源碼了。而這個源碼就是解釋引擎翻譯以後的源碼。除訪問速度較慢之外,動態頁面的數據是從數據庫裏面調用過來的若是訪問的人數較多,數據庫的壓力會很是大。不過如今的動態程序多數都使用了緩存技術。可是整體來說,動態頁面對於服務器的壓力比較大一些。同時動態頁面的網站通常對於服務器的要求比較高一些,同時訪問的人越多也會形成服務器的壓力越大。jsp

 

3.僞靜態頁面優化

  僞靜態頁面定義:「假」靜態頁面,實質上是動態頁面。

  優勢:相比靜態頁面而言,並無速度上的明顯提高,由於是「假」靜態頁面,其實仍是一個動態頁面,也是一樣須要翻譯爲靜態頁面的。最大的好處就是讓搜索引擎(Search Engine)把本身的網頁當作靜態頁面來處理。

  缺點:顧名思義,「僞靜態」就是「假靜態」,搜索引擎不會把他當作靜態頁面來處理,這只是咱們靠經驗考邏輯去分析的,並不必定準確。或許搜索引擎直接把它認爲是動態頁面。

動態頁面變爲僞靜態:

 一、下載並引用jar包: urlrewritefilter-4.0.3.jar

 二、配置 web.xml ,在 web.xml 中配置過濾器:

 1 <!--配置Url Rewrite的Filter -->
 2     <filter>
 3     <filter-name>UrlRewriteFilter</filter-name>
 4     <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
 5     </filter>
 6     <!--配置Url Rewrite的Filter攔截全部請求-->
 7     <filter-mapping>
 8         <filter-name>UrlRewriteFilter</filter-name>
 9         <url-pattern>/*</url-pattern>
10         <dispatcher>REQUEST</dispatcher>
11         <dispatcher>FORWARD</dispatcher>
12     </filter-mapping>

三、在 WEB-INF 目錄下新建文件 urlrewrite.xml 文件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
 3    "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
 4 <urlrewrite>
 5     <rule>
 6         <from>/userinf-([0-9]+).html</from>
 7         <to type="forward">/NewFile.jsp?username=$1</to>
 8     </rule>
 9     <!--  forward   redirect
10     <outbound-rule> 
11         <from>/NewFile.jsp\?username=([0-9]+)</from>
12         <to>/userinf-$1.html</to>
13     </outbound-rule> -->
14 </urlrewrite>

四、創建一個簡單的 jsp 頁面:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11     <%
12         String user = request.getParameter("username");
13     %>
14     <%
15         out.println("如今時間是: " + new java.util.Date() + "<br />");
16         out.println("用戶名: " + user);
17     %>
18     <br />
19     <c:url value="/NewFile.jsp?username=8" var="tempNewsUrl"></c:url>
20     <a href="${tempNewsUrl}">新聞2</a>
21 </body>
22 </html>

五、展現效果

輸入僞靜態頁面地址,事實上請求的是動態頁面數據;

 

簡單總結:

  • 靜態頁面訪問最快;維護較爲麻煩。
  • 動態頁面佔用空間小、維護簡單;訪問速度慢,若是訪問的人多,會對數據庫形成壓力。
  • 使用純靜態和僞靜態對於SEO(Search Engine Optimization:搜索引擎優化)沒有什麼本質的區別。
  • 使用僞靜態將佔用必定量的CPU佔用率,大量使用會致使CPU超負荷。

 

參考連接:

    http://www.cnblogs.com/software1113/p/4671384.html

相關文章
相關標籤/搜索