`
2277259257
  • 浏览: 499445 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

动态网站中静态页面的管理与维护

 
阅读更多

内容摘要:

  静态网页和动态网页各有特点,网站采用动态网页还是静态网页主要取决于网站的功能需求和网站内容的多少,如果网站功能比较简单,内容更新量不是很大,采用纯静态网页的方式会更简单,反之一般要采用动态网页技术来实现。  

  静态网页是网站建设的基础,静态网页和动态网页之间也并不矛盾,为了网站适应搜索引擎检索的需要,即使采用动态网站技术,也可以将网页内容转化为静态网页发布。 

  动态网站也可以采用静动结合的原则,适合采用动态网页的地方用动态网页,如果有必要使用静态网页,则可以考虑用静态网页的方法来实现,在同一个网站上,动态网页内容和静态网页内容同时存在也是很常见的事情。 

 

一、动态网页与静态网页

  什么是动态网页?动态网页有哪些特点?

  动态网页是与静态网页相对应的,也就是说,网页URL的后缀不是.htm、.html、.shtml、.xml等静态网页的常见形式,而是以.asp、.jsp、.php、.perl、.cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”。

  如页面网址为:http://www.webjx.com/list.php?typeid=3

  这就是一个典型的动态网页URL形式。

  这里说的动态网页,与网页上的各种动画、滚动字幕等视觉上的“动态效果”没有直接关系,动态网页也可以是纯文字内容的,也可以是包含各种动画的内容,这些只是网页具体内容的表现形式,无论网页是否具有动态效果,采用动态网站技术生成的网页都称为动态网页。 

  从网站浏览者的角度来看,无论是动态网页还是静态网页,都可以展示基本的文字和图片信息,但从网站开发、管理、维护的角度来看就有很大的差别。

  我们将动态网页的一般特点简要归纳如下:

  (1)动态网页以数据库技术为基础,可以大大降低网站维护的工作量; 

  (2)采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等; 

  (3)动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页; 

  (4)动态网页中的“?”对搜索引擎检索存在一定的问题,搜索引擎一般不可能从一个网站的数据库中访问全部网页,或者出于技术方面的考虑,搜索蜘蛛不去抓取网址中“?”后面的内容,因此采用动态网页的网站在进行搜索引擎推广时需要做一定的技术处理才能适应搜索引擎的要求。 

  (5)网站由于其具有交互性,所以网站存在很大的安全隐患,如果开发设计人员在编程过程中安全性没有考虑到位,网站是很容易被黑客入侵的。

  (6)动态网站的页面上的信息都必须从数据库中读取,每打开一个页面就读取数据库一次,如果访问网站的人数很多,这会对服务器增加很大的荷载,从而影响这个网站的运行速度。

   什么是静态网页?静态网页有哪些特点?

  在网站设计中,纯粹HTML格式的网页通常被称为“静态网页”,早期的网站一般都是由静态网页制作的。

  静态网页的网址形式通常为:http://www.webjx.com/htmldata/2005-06-17/1118962699.html

  也就是以.htm、.html、.shtml、.xml等为后后缀的。在HTML格式的网页上,也可以出现各种动态的效果,如.GIF格式的动画、FLASH、滚动字母等,这些“动态效果”只是视觉上的,与下面将要介绍的动态网页是不同的概念。 

  我们将静态网页的特点简要归纳如下:

  (1)静态网页每个网页都有一个固定的URL,且网页URL以.htm、.html、.shtml等常见形式为后缀,而不含有“?”; 

  (2)网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件; 

  (3)静态网页的内容相对稳定,因此容易被搜索引擎检索; 

  (4)静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;  

  (5)静态网页的交互性交叉,在功能方面有较大的限制。

  以上分别介绍了动态网页和静态网页的概念及各自的特点。由上述信息可知,当网站规模较小,网站内容更新不频繁时,用静态页面是完全合适的。但是当网站内容更新频繁时,使用静态页面不便于更新,这时使用动态页面就会节省很多的精力。不过,动态页面也有自己的不足,如果网站访问量非常大,程序需要处理的数据量就非常大,容易造成网站不稳定甚至瘫痪。针对上述问题,有一种解决方案,就是使用“动静结合”的方式来管理网站的信息。所谓“动静结合”,就是发布的内容还是采用后台程序录入,录入完成后,后台程序将录入的信息根据选定的模板自动的制作成静态网页保存在服务器上,而且这些静态网页的管理与维护也由后台程序统一进行,不需要人为干预。这样避免了手工制作静态页面的大工作量,又不失动态页面的灵活性。

 

二、动态页面静态化的实际问题

  以新闻发布系统为例,在实际中有两种情况需要分析。

  第一种,信息发布以后,内容变化不大的页面(如:新闻显示页面)。这类页面由于发布以后变动不大,可完全使用后台进行管理。具体的操作有:添加文章时生成静态页面,修改文章、管理评论时更新静态页面,删除文章时删除静态页面。由于文章链接直接指向静态页面,而且用户浏览是不需要经过程序的处理,所以浏览速度是最快的。但是缺点也很明显,静态页生成后不能自动更新,需要管理员在后台进行手工操作,在改版时尤其不便。

  第二种,信息发布以后,页面内容变化会变化很大(如:新闻列表页面)。此类页面随发布信息的添加、修改、删除等操作而变化,比较频繁。添加了一篇文章,此文章所在分类及其所有父分类的分类列表页面都需要更新,此过程对服务器性能影响很大,而且生成的静态页面也不一定有机会被访问。为了解决这个问题,可以让前台的一个动态页面参与静态页面的管理和维护。前台工作流程如下:所有分类页面的连接均指向一个动态页面(如:class.aspx?classid=123&page=1,classid是该分类的id,page是页码),该页面检查所对应的静态页面是否存在或者是否需要更新,若不存在或需要更新,则进行更新,之后再转向对应的静态页面。后台的设计比较简单,只要在文章被添加、修改、删除时将该分类及父分类的静态页面全部删除就行。这样做的好处是可以避免生成没有被访问的页面,减轻了服务器的负担,有可以定期自动更新页面;另一方面,前台还是靠程序来维护,当访问量大时,对服务器来说,还是一项比较大的负担。

 

三、具体设计

首先,以asp.net技术和c#语言说明生成静态页面的方法。使用HttpWebRequest类就可很容易的将动态网页静态化。程序代码如下:

 

 public bool string MakeStatic(string sUrl,string htmlPath)

 {

         try

         {

              string sResponse = null;

 

              //发送http get请求sUrl

              HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sUrl);

              Stream stream = request.GetResponse().GetResponseStream();

 

              using(StreamReader reader = new StreamReader(stream,Encoding.Default))

              {

                   //读取服务器回应

                   sResponse = reader.ReadToEnd();

                   reader.Close();

              }

 

              using(StreamWriter writer = new StreamWriter(htmlPath,false,Encoding.Default))

              {

                   //写入静态页面

                   writer.Write(txt);

                   writer.Flush();

                   writer.Close();

              }

         }

         catch

         {

              //失败

              return(false);

         }

 

         //成功

         return(true);

     }

 

  MakeStatic函数接收两个参数,sUrl为要浏览的页面,htmlPath为要保存的静态文件。该函数模拟浏览器,向服务器发出http get命令,请求地址sUrl,并接收服务器返回的html代码,最后将这些html代码保存到htmlPath文件中,就完成了静态页面的制作,非常方便。

  其次,针对前面两种情况,分别给出具体的解决方法。

  第一种情况,新闻显示页面。

    静态页面的生成用上面给出的函数可以轻易实现。不过还有几个实际的问题需要解决。生成静态页面以后,内容就固定了,要解决广告、点击量和评论的自动更新,这些内容就不能被放进静态页面中去,而是使用框架或脚本包含进静态页面,这样个部分互不影响,更新起来更方便。

    一、广告的更新。直接用框架包含进一个含有广告的页面(如:ad.html)就可以圆满的解决,更换广告时只需要更新ad.html,所有静态页面的内容就都随着更新了。框架的代码:

      

    二、点击量的更新。思路跟广告一样,单独有一个页面来统计点击量(如:hits.aspx),可以使用框架来包含进静态页面(代码同上),也可使用脚本方式,代码为:

      

      代码中给出了名为articleid的参数,该参数指定了要被更新点击量的文章id,hits.aspx根据articleid参数更新该文章的点击量并输出显示。

    三、评论的更新。评论的更新过程比较复杂,因为添加评论是一个交互的过程,静态页面自身根本不可能完成这一操作。解决方法是把添加评论的工作交给另一个页面(如:remark.aspx)来完成。具体过程为:在静态页面上用form给remark.aspx传递评论的内容,remark.aspx接收评论内容,添加评论,更新文章的静态页面,最后再重定向到静态页面。这样就完成了评论的添加。

 

      form处的代码:

       

             评论内容:

             

 

      remark.aspx中相关操作的代码:

              protected override void OnLoad(EventArgs e)

              {

                   base.OnLoad (e);

 

                   int nArticleID = int.MinValue;//文章id

                   int nClassID = int.MinValue;//分类id

 

                   try

                   {

                       //获取传入参数

                       nArticleID = int.Parse(this.Request.QueryString["articleid"]);

                       nClassID = int.Parse(this.Request.QueryString["classid"]);

                   }

                   catch

                   {

                   }

 

                   //检查有效性

                   if(nArticleID < 1 || nClassID < 1)

                   {

                       this.Response.Redirect("/error.html",true);

                   }

             

                   string sRemarkBody = this.Request.Params["remarkbody"];

 

                   //格式:/show.aspx?id=456&cid=123

                   string sFrom = string.Concat("/show.aspx?id=",nArticleID,"&cid=nClassID);

 

                   //格式:/news/123/456.html

                   string sTo = string.Concat("/news/",nClassID,"/",nArticleID,".html");

 

                   if(sRemarkBody != null && sRemarkBody.Length > 0)

                   {

                       //添加评论

                       InsertRemark(nArticleID);

 

                       //生成静态页面

                       MakeStatic(sFrom,this.MapPath(sTo));

                   }

 

                   //转向静态页面

                   this.Response.Redirect(sTo,true);

              }

 

      这样处理的静态页面在普通浏览时与其它的静态页面完全一样,只是在发评论时对待更新评论的程序,整体的招待速度还是很快的。

第二种情况,新闻分类列表页面。此类页面在管理新闻的时候变化会非常大,即使采用后台管理也非常的不便。这就需要一些程序来帮助管理员管理这些页面。程序思路在前面已经提过,在此给出能够实际应用的程序代码。

 

              protected override void OnLoad(EventArgs e)

              {

                   base.OnLoad (e);

 

                   int nClassId = int.MinValue;//分类id

                   int nPage = int.MinValue;//页码

                  

                   try

                   {

                       //获取传入参数

                       nClassID = int.Parse(this.Request.QueryString("classid"));

                       nPage = int.Parse(this.Request.QueryString("page");

                   }

                   catch

                   {

                   }

 

                   //检查有效性

                   if(nClassID < 1)

                   {

                       this.Response.Redirect("/error.html",true);

                   }

                   else if(nPage < 1)

                   {

                       nPage = 1;

                   }

 

                   //格式:/list.aspx?cid=123&page=456

                   string sFrom = string.Concat("/list.aspx?cid=",nClassID,"&page=",nPage);

 

                   //格式:/news/123/default456.html

                  string sTo = string.Concat("/news/",nClassID,"/default",((nPage==1) ? ("") : (nPage)),".html");

                   string sPath = this.MapPath(sTo);

 

                   if(!File.Exists(sPath))

                   {

                       //文件不存在时,创建静态页面

                       MakeStatic(sFrom,sTo);

                   }

                   else

                   {

                       TimeSpan ts = DateTime.Now - File.GetLastWriteTime(sPath);

 

                       if(ts.TotalDays > 1)

                       {

                            //文件已存在,但是存在时间过长,需更新

                            MakeStatic(sFrom,sTo);

                       }

                   }

 

                   //转向静态页面

                   this.Response.Redirect(sTo,true);

              }

 

      后台管理相对容易,只需要在文章管理后,将分类列表页面删除即可。当该页面被访问时list.aspx会重建该页面,这样,只在该页面首次被访问或更新时读取数据库,减小了数据库操作,提高了站点的整体性能。此方案已在青春期在线网站得到应用,效果明显。

分享到:
评论

相关推荐

    动态网页与静态网页的区别

    静态网页与动态网页的区别在于Web服务器对它们的处理方式不同。当Web服务器接收到对静态网页的请求时,服务器直接将该页发送给客户浏览器,不进行任何处理。如果接收到对动态网页的请求,则从Web服务器中找到该文件...

    生成静态html文件的企业门户网站系统

    网软志成企业网站管理系统V2030生成HTML静态页面版新增功能: 1.全站使用DIV+CSS排版,极大提升网站速度,更有利于搜索引擎收录数量和网店排名; 2.能在后台自动生成前台静态html网页,提升网站访问速度,兼容目前主流...

    如何高效地管理网站静态资源

    网站也变得越来越庞大,存在大量静态资源,我们原有管理静态资源的方式变得越来越不适用,就如同封面图一样,静态资源之间的关系错综复杂,给工程师带来了很多麻烦:人工管理依赖的噩梦,工程师需要频繁管理和维护每...

    计算机病毒与防护:PHP表单处理(GET).ppt

    动态页面与静态页面的区别 静态网页: html或者htm,是一种静态的页面格式,不需要服务器解析其中的脚本。由浏览器(如IE、Chrome等)解析 动态网页:由相应的脚本引擎来解释执行,根据指令生成静态网页,如PHP、JSP...

    基于PHP美食网站网页设计.zip

    注重运用先进的网站设计技术 考虑到网站在交互性及对网页维护等方面的要求,在网站设计上我们放弃了静态网页设计技术,转而采用动态网页设计。注重网页的视觉效果 合理的网站色调选择和版面布局。 基于PHP美食...

    浩毛网站管理系统v1.0

    通过它可以使您节省使用静态页面带来的很多不便之处,如维护工作量大、维护成本高等等,让您轻轻松松的进行网站更新,特别是可在需要页面中插入定制的ASP程序生成的Javasript信息列表,使你能灵活设计网站,不会象...

    速群HTML静态论坛3.0

    2)损坏包括程序的使用(或无法再使用)中所有一般化,特殊化,偶然性的或必然性的损坏(包括但不仅仅只是数据的丢失,自己或第三方所维护数据的不正确修改,和其他程序协作过程中本程序的崩溃等),即使官方版权持有人提醒了...

    私服发布网站管理系统 v1.2

    私服发布网站管理系统自发布以来,一直致力为广大私服站长及骨灰玩家提供专业的私服导航服务。作为商业软件产品,在代码质量、运行效率、负载能力、安全等级、功能可操控性和权限严密性、效率最优化和负载能力最佳化...

    非常不错的企业网站管理系统生成HTML版

    它具有完善的企业网站功能模块,全面整合信息协同管理系统(OA),在独立动态后台管理生成HTML静态前台网页。让您提升建站效率,提高服务质量,降低建站成本。利用速群企业网站管理系统,全方位展示你的产品,在线订购...

    jsp631SSH_Mysql油料仓库信息管理系统.java源码论文

    动态网页与静态网页相结合的方法制作此系统,动态网页一般以数据库技术为基础,可以大大降低网站维护的工作量;可以实现此系统的更多功能,如用户登录、货物分类管理、货物管理、入库管理、出库管理、库存信息浏览、...

    asp电影站源码_可生成静态页面的电影网站源码

    asp电影站源码_可生成静态页面的电影网站源码 源码程序:asp+access 源码大小:18.4M 源码编码:GBK 适用范围:电影、娱乐 源码介绍:该程序界面仿造奇热最新版电影网站,内核采用MAXCMS 4.0,后台支持一键采集电影...

    Dreamweaver网页设计.ppt

    Dreamweaver CS3提供了完美的网页设计方案,是目前网页设计的主流软件,是世界上最优秀的可视化网页设计制作工具和网站管理工具之一,借助Adobe Dreamweaver CS3软件, 我们快速、轻松地完成设计、开发和维护网站和...

    西风ASP内容管理系统SCMSv4.1

    规范网站后台信息流程、统一数据存储格式、减少网站维护的投入、加强信息披露的权限管理等方面的能力与效率,并且为降低网站建设与维护的复杂性、提升网站的运营管理能力提供了更为有效的技术保障。 4.0主要功能特点...

    网趣网上购物系统HTML静态版

    √更易维护和管理,HTML静态页面后台只须轻轻一点,即可全部生成,方便快捷! √是电子商务时代发展潮流,目前较为流行的购物站均采用静态的HTML,采用HTML静态版已是大势所趋。 &lt;br/&gt; 网趣网上购物...

    java 静态化完整示例

    jsp 通过模板生成 shtml 可生成静态shtml首页页面 列表页即时生成[信息添加/删除/更新时,列表页自动更新] 静态分页功能* 按当前日期生成对应目录[方便管理和日后维护]

    网趣网上购物系统HTML静态版 V2009

    4、更易维护和管理,后台只须轻轻一点,即可全部生成,方便快捷5、是电子商务时代所趋,目前较为流行的购物站均采用静态化的HTML,采用HTML静态版已是大势所趋。  系统功能方面更是十分强大!静态版率先支持了商品...

    CMS网站管理系统 v3.0 beta utf-8

    整个网站可以快速地、全部生成静态页面,支持动态、纯静态、伪静态等多种格式发布,易于搜索引擎的快速收录,有效提升网站搜索提名,充分满足您的多样化需要,让您的网站立于不败之地。发布静态站点时可以选择不同的...

    服务器维护制度(1).docx

    5.1.3管理员每天定期检查所管辖服务器操作系统是否处于良好工作状态,内存、CPU与页面文件的使用率不应过高,检查服务器磁盘与连接的盘阵工作状态是否良好。 服务器维护制度(1)全文共6页,当前为第2页。 服务器维护...

    网趣网上购物系统HTML静态版v2012版

    √ 更易维护和管理,HTML静态页面后台只须轻轻一点,即可全部生成,方便快捷! √ 是电子商务时代所趋,目前较为流行的购物站均采用静态化的HTML,采用HTML静态版已是大势所趋。 六、HTML静态版拥有6套风格...

Global site tag (gtag.js) - Google Analytics