`
2277259257
  • 浏览: 515365 次
  • 性别: 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会重建该页面,这样,只在该页面首次被访问或更新时读取数据库,减小了数据库操作,提高了站点的整体性能。此方案已在青春期在线网站得到应用,效果明显。

分享到:
评论

相关推荐

    系统维护静态网页源码.zip

    在IT行业中,静态网页源码是构建互联网应用的基础部分,尤其在进行系统维护时,它起着至关重要的作用。"系统维护静态网页源码.zip"这个压缩包包含了用于展示网站系统维护状态的静态HTML页面及其相关资源。让我们深入...

    静态网页 学生管理系统 学生信息管理系统 页面设计

    与动态网站不同,静态网页不依赖服务器端的脚本语言(如PHP、ASP.NET或JSP)来生成内容,而是直接通过HTML、CSS和JavaScript等前端技术来呈现预先定义好的内容。 1. **静态网页设计**: 静态网页主要由HTML、CSS和...

    网站维护页面炫酷源码.zip_AQR_维护页面代码_网站维护源码_网站维护页面_酷炫维护源码

    这意味着这个维护页面是一个静态页面,不依赖于后端数据库来显示内容。这简化了部署过程,降低了出错的可能性,也使得页面加载速度更快。 总的来说,这个资源为那些需要快速建立专业且有吸引力的网站维护页面的用户...

    仓库管理系统网站静态页面

    【仓库管理系统网站静态页面】是针对仓库管理流程中送货环节设计的一整套网页界面,用于提升仓库操作效率和数据管理的准确性。这类系统通常包括供应商管理、库存控制、订单处理等多个功能模块,通过直观易用的用户...

    网站后台管理静态页面及前台模板页面

    网站后台管理静态页面和前台模板页面是构建一个完整网站不可或缺的部分。它们决定了用户与网站交互的方式和体验。在这个话题中,我们将深入探讨这两类页面的关键元素、设计原则以及实现技术。 1. 后台管理静态页面 ...

    Java web 动态网页与静态网页

    在IT行业中,动态网页与静态网页是Web开发的两个重要概念。动态网页是基于服务器端编程技术,如Java,能够根据用户输入或特定条件实时生成内容的网页。而静态网页则是预先编写好,内容固定不变,每次用户请求时直接...

    员工管理系统静态页面(含跳转)

    6. **路由管理**:在静态页面中,虽然没有服务器端的路由,但可以通过JavaScript实现前端路由,根据URL的不同路径展示不同的内容,例如使用Hashbang(#!)或History API。 7. **模板引擎**:为了简化HTML的动态插入...

    网站静态页面demo

    在"网站静态页面demo"这个案例中,我们可以深入学习和理解如何构建一个完整的静态网页。"页面布局"标签提示我们,这个压缩包可能包含了一些关于网页布局设计的知识点。 1. **HTML结构**:HTML(超文本标记语言)是...

    30套系统管理静态页面

    在IT行业中,静态页面通常指的是不含有服务器端动态脚本的网页,它们的内容在用户请求时不会根据用户数据或时间变化而变化。"30套系统管理静态页面"的标题表明这是一组专用于系统管理的网页设计模板,数量为30个,...

    企业网站的静态页面

    企业网站的静态页面是互联网上常见的一种网页类型,它们主要用于展示基本信息、产品介绍或服务详情。与动态页面相比,静态页面的内容在服务器端不会根据用户交互而改变,而是预先生成并存储为HTML文件,直接由Web...

    网站后台管理系统 静态页面

    5. **后台管理功能**:虽然这里的描述强调的是静态页面,但通常网站后台管理系统会包括用户管理、内容发布、权限控制、数据统计等多种功能,帮助管理员高效地维护网站。 6. **响应式设计**:考虑到不同的访问设备,...

    网站,静态与动态的区别

    #### 静态与动态网站的区别 1. **内容生成方式**:静态网站的内容在部署时就已经确定好,而动态网站的内容则是在运行时动态生成的。 2. **用户交互能力**:静态网站无法实现复杂的用户交互,而动态网站则能够提供...

    动态aspx页面静态化

    在IT行业中,动态网页与静态网页是两种常见的网页类型。动态网页(如ASP.NET的aspx页面)通常基于服务器端的编程技术,...实施时需综合考虑网站的特性和需求,选择合适的策略,同时注意维护静态页面的更新和一致性。

    人力资源管理系统模版html静态页面.zip

    【标题】:“人力资源...同时,由于是静态页面,维护和部署相对简单,适合中小型企业或初创公司快速搭建内部系统。然而,要实现一个完整的人力资源管理系统,还需要结合后端服务器和数据库来处理数据存储和业务逻辑。

    6个网站(静态网页)

    此外,了解前端框架如React、Vue或Angular也能帮助将静态页面转变为具有更多功能和交互性的动态网站。这些框架提供了组件化开发模式,简化了大型项目的管理和维护。 在实际的网页设计过程中,设计师还需要考虑SEO...

    2套简化漂亮的html网站维护源码_网站维护源码_502页面源码_维护源码_

    标签“网站维护源码 502页面源码 维护源码”进一步强调了这些源码的主要用途,它们是专门为了创建网站维护状态提示、502错误页面而设计的,对于那些不希望在网站维护期间失去用户体验的网站管理员来说,是非常有用的...

    网站后台管理静态模板

    网站后台管理静态模板是网页设计领域中一个重要的组成部分,它主要负责提供网站管理员进行内容更新、数据管理和系统设置的工作环境。这种模板通常不包含动态服务器端脚本,而是由HTML、CSS和JavaScript等前端技术...

    网站后台管理模版html静态页面

    网站后台管理模版HTML静态页面是构建Web应用后台界面的重要组成部分。这些页面通常是不依赖服务器端脚本(如PHP、Java、Python等)的纯HTML、CSS和JavaScript代码,主要用于展示和操作数据,提供给管理员进行网站...

Global site tag (gtag.js) - Google Analytics