个人电子商务网站建设之——整站静态化实现的选择、设计与实现(二):静态页面的实现方式;
2011-09-05 19:07
936 查看
本系列文章记录近期本人开发过程中与静态化页面有关的内容与心得,整个系列分为,本篇为第二篇,目录如下:
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(一):选择静态实现;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(二):静态页面的实现方式;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(三):Cookie的使用;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(四):静态页展现登陆状态,以及登陆及注销的实现原理;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(五):静态产品页下单并过度到下单页面的实现原理;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(六):产品页面静态化优化原理与实现;
隐藏行号复制代码?代码
//functionCopyCode(key){varcodeElement=null;vartrElements=document.all.tags("ol");vari;for(i=0;i隐藏行号复制代码?代码
//functionCopyCode(key){varcodeElement=null;vartrElements=document.all.tags("ol");vari;for(i=0;i 实现的原理很简单:确定要抓取的网页的URL,通过HttpWebRequest对象向网站提交此页面请求,获取相应的HTML代码,然后以指定文件名保存HTML到指定的路径下。这里只展示生成首页HTML页面的代码,并且是极其缩减版本,实际情况当然需要加一些路径的生成,目录判断与创建以及其他控制等等。其他页面的静态页生成的方法也大致类似。
当然,实际环境还要考虑其他一些问题,比如:有客户买了,需要触发式的生成对应的产品静态页以减少库存数;新上架一批产品,或者对一些产品进行修改之后,如何实现只生成需要生成的静态页,而不是所有产品静态页全部生成。这些的细节,以后的文章中会有所涉及。
在实施过程中,这个方法还遇到了一个麻烦,在将程序部署到虚拟空间上之后,生成不了,提示错误为:WebRequest错误:Unabletoconnecttotheremoteserver。网络上查了一下,有些人反映是所使用环境装了代理引起的错误,去咨询空间商的技术支持,表示没有这个问题,后考虑良久,并测试了一下,发现是服务器环境的DNS配置有问题,向客服人员反映,遂解决。如何确定DNS是否有问题,请百度“NSLOOKUP”。
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(一):选择静态实现;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(二):静态页面的实现方式;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(三):Cookie的使用;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(四):静态页展现登陆状态,以及登陆及注销的实现原理;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(五):静态产品页下单并过度到下单页面的实现原理;
个人电子商务网站建设之——整站静态化实现的选择、设计与实现(六):产品页面静态化优化原理与实现;
网页静态化的实现方式有不止一种,可以将模板页面存在数据库中,然后根据不同内容替换模板页面中的动态信息,最后保存处理过的HTML代码到
指定目录,这是一种方法,这个方法有缺点也有优点:
缺点:复杂,繁琐,如果网站需要改版,得首先修改模板内容,然后再重新生成;并且实现起来不是很直观,实现过程容易混乱;
优点:生成页面的时候不需要额外的提交HTTP请求,IIS负担减轻;
我用的是另外一种方法:直接开发的时候按动态网页的做,最后通过HttpWebRequest请求抓取指定页面的HTML,保存到指定路径,实现静 态化。选用这种方法当然也是有取舍的: 缺点:需要提交HttpWebRequest请求,生成静态页时IIS会有所负担; 优点:直观,简单,只需要将之前做的动态页中相应的路径进行小工作量的修改,即可进行抓取生成静态页;出了问题也方便调试;
直入主题,放代码:
隐藏行号复制代码?代码
///<summary>
///发出httpget请求获取返回的信息
///</summary>
///<paramname="url"></param>
///<returns></returns>
privatestringHttpGet(stringurl)
{
stringresponseHTML=string.Empty;
try
{
string[]list=newstring[2];
HttpWebRequestrequest=null;
HttpWebResponseresponse=null;
request=(HttpWebRequest)WebRequest.Create(url);
request.Method="GET";
//返回HTML
response=(HttpWebResponse)request.GetResponse();
StreamdataStream=response.GetResponseStream();
StreamReaderreader=newStreamReader(dataStream,Encoding.GetEncoding("UTF-8"));
responseHTML=reader.ReadToEnd();
}
catch
{}
returnresponseHTML;
}
//functionCopyCode(key){varcodeElement=null;vartrElements=document.all.tags("ol");vari;for(i=0;i
///<summary>
///生成首页HTML页面
///</summary>
privatevoidInitHomePagePage()
{
stringDefaultHtml=HttpGet(首页URL);
File.WriteAllText(首页存放路径,DefaultHtml,Encoding.GetEncoding("UTF-8"));
}
//functionCopyCode(key){varcodeElement=null;vartrElements=document.all.tags("ol");vari;for(i=0;i
当然,实际环境还要考虑其他一些问题,比如:有客户买了,需要触发式的生成对应的产品静态页以减少库存数;新上架一批产品,或者对一些产品进行修改之后,如何实现只生成需要生成的静态页,而不是所有产品静态页全部生成。这些的细节,以后的文章中会有所涉及。
在实施过程中,这个方法还遇到了一个麻烦,在将程序部署到虚拟空间上之后,生成不了,提示错误为:WebRequest错误:Unabletoconnecttotheremoteserver。网络上查了一下,有些人反映是所使用环境装了代理引起的错误,去咨询空间商的技术支持,表示没有这个问题,后考虑良久,并测试了一下,发现是服务器环境的DNS配置有问题,向客服人员反映,遂解决。如何确定DNS是否有问题,请百度“NSLOOKUP”。
相关文章推荐
- 电子商务网站的设计与实现(二):一期功能清单
- html页面静态文本实现关键词超链接的实现方式
- 面向搜索引擎的内容管理系统(CMS)设计——利用Squid反相代理缓存实现网站内容静态发布
- 从零开始实现一个电子商务网站----UI的设计布局(八)
- 02.java实现冷饮批发管理系统-页面设计之【选择店铺页面】
- 电子商务网站产品页面的设计细节和设计模式
- 电子商务网站设计与选择
- JavaScript网站设计实践(二)实现导航栏当前所选页面的菜单项高亮显示
- 网站建设页面设计中CSS正确书写
- EasyUI Tabs + Yii2.0实现iframe方式打开页面(解决共用静态文件引入加载的问题)
- 面向搜索引擎的内容管理系统(CMS)设计——利用Squid反相代理缓存实现网站内容静态发布 转贴
- 面向搜索引擎的内容管理系统(CMS)设计——利用Squid反相代理缓存实现网站内容静态发布
- 石家庄网站设计:jsp网站的静态页面生成方案
- 静态页面也可以实现预览 列表不同的显示方式 原创
- 电子商务网站的设计与实现(四):项目名称malling和一期开发计划
- 关于拥有海量数据的电子商务网站的CRM系统建设底层存储实现的一点随想
- 网站正在建设中提示页面设计欣赏
- 电子商务网站的设计与实现(四):项目名称malling和一期开发计划
- iframe结构的网站按F5刷新子页面的实现方式