静态页面、动态页面和伪静态页面的区别以及实现方法

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

相关文章
相关标签/搜索