C#页面静态化学习

上传人:woxinch****an2018 文档编号:39301775 上传时间:2018-05-14 格式:DOC 页数:7 大小:48KB
返回 下载 相关 举报
C#页面静态化学习_第1页
第1页 / 共7页
C#页面静态化学习_第2页
第2页 / 共7页
C#页面静态化学习_第3页
第3页 / 共7页
C#页面静态化学习_第4页
第4页 / 共7页
C#页面静态化学习_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《C#页面静态化学习》由会员分享,可在线阅读,更多相关《C#页面静态化学习(7页珍藏版)》请在金锄头文库上搜索。

1、 静态化页面实现学习by widebright静态化页面是指使用动态页面语言编程,生成*.htm 静态页面文件。好像这个技术很 流行!看象百度知道,没一个问题都是一个 html 文件,163 新闻评论页面也都是 html 页面。 所以在网上搜索了一下相关的资料。为什么都喜欢采用静态页面化?听说是有以下有点:1、 提高服务器性能, *.aspx 之 类的动态页面毕竟是还要经过服务器解析处理的,而静态页面服务器只要返回相应的文件 就可以了。怎么说静态面效率也要高一点啦。2、说是安全性高(可能是说不用担心 SQL 注入这些东西了,静态页面啊,当然没有这个了) 。3、容易被搜索引擎收录(好像网页搜 索

2、引擎处理静态页面更容易一点,想也是动态页面还要请求啊什么的) 。 可能还有其他有 点我就不知道了。不过我个人觉得要不要采用静态化网页也还是要考虑一下的,动态网页 的性能也没有象想象的那么差,大多数的时候还是能够满足要求的,象微软自己的网页 MSDN, 论坛也没有去实现静态页面化。看了一下高手的分析,说是动态的 网页便于控制权限,新闻的内容生成系统 CMS 采用静态页面化确实可以提高系统性能。 要不要采用这项技术还是自己考虑吧。 中的实现方法: 查找了很多资料,说我看到的一些实现方法。 1. url 重定向。就是在服务器端采用 url 重定向,把你对静态页面的请求转到动态页面上 去。你访问

3、http:/ 其实是转到 http:/ 去了。 这个其实是假的静态化页面,他根本就没有 静态页面的存在。对 URL 重写转向的支持,在 Apache 服务器上由一非缺省模块(mod_rewrite)来完 成,而在 IIS 下也同样有类似的模块,分别是 ISAPI REWRITE 及 IIS REWRITE。无 论是在 Apache 下还是在 IIS 下,重写转向的语法都基于正则表达式,只有少量的不同。这 个 IIS 重定向 ISAPI 是要额外安装扩展才有的,有需要的可以自己在网上找一下。在 A 下面也可以通过实现 http handler 或者 http module 模块来实现,象有一个.

4、 net 平台的 Ajax 组件也是通过实现 http handler 来整合的,关于 http handler 的实现在我的 文件上传组件那篇文章里也有提及,感兴趣的自己学习吧。个人觉得是可以做到 url 静态请求转换到动态请求页面的这种 url 映射功能的。不过这种方法是要稍稍影响性能的,毕竟多了个 ISAPI 的环节。 2、采用 xml 文件,结合 xlst 文件。这种方法很多人都知道,因为 CSDN 论坛就是这么做 的。我个人对 xml 方面的技术不太了解也不感兴趣。想了解这方面资料的自己找去吧,反 正是通过 xlst 文件(模版)自动显示 xml 文件的内容出来。 3.采用 Aja

5、x 技术,采用这个当然可以做到静态页面了。 4.采用 html 模版替换技术。就是预先写个 html 模版文件,然后在生成静态页面时进行替换。 这种方法实现起来很容易,也是我想到的方法。网上有很多例子,我就不详细说了。比如 写象下面一样一个模版 : title content生成静态页面的时候用个 string.replace 方法把 title content 等替换成你自己的具体的 内容就行了。静态页面的生成可以选择在有数据更新的时候,比如一张帖子又有人回复了, 就可以重新生成这张帖子的 html 文件。当然你这个 html 模版可以做的更复杂一些了,比 如加入 css 等等啦。 静态页面

6、评论功能的实现: 这也是一开始不理解的地方,看网易新闻,百度知道,都是 html 静态页面都还可以回复, 发表评论等。这些评论、回复是要保存到数据库里面去的,不是动态页面才能实现的功能 吗?我一开始感到很奇怪。综合众人的说法,网页点击技术等可以通过在 include 页面外 javascript 脚本的时候指定 src 为一个 asp 之类的动态网页,在那个动态页面实现计数等功 能。评论功能的实现有人说在页面下端加一个 iframe 来显示。在 iframe 里加一个动态页面 确实可以做到的,不过我觉得好像和直接采用动态页面没多大区别。还是看看别人是怎么做的吧。我随便打开了个百度知道的页面,查

7、看了一下页面的源 代码:document.write(“);我也来回答:回答即可得 2 分,回 答被采纳则获得悬赏分以及奖励 20 分。 积分规则回答字数在 10000 字以内参考资料:如果您的回答是从其他地方引用,请表明出处。可以看到其中的回复的一段如上面所示, 这个段是采用一个 form 标签框起来的。 好象有 几个地方和特殊:比如 form 的 action 属性 ,可能是我以前没做接触网页设计原因吧。 我在网上查了一下这个属性,原来表示回复接受数据的网页的。 这样通过点击 这个按钮提交 form 页面的时候,这个 form 的数据就发送到 action 指定的地址去,由 action

8、指定的地址处理数据。明显可以再这 里指定个动态网页然后再那个页面上进行处理,完成品评论/回复的提交功能。 至于 form 标签中的那个 method 属性却是表示数据提交的方式。method 为 post 的时候,数据是通过 http 来传送,数据传过去也可以在 request.form 数据这里得到,如果 method 为 get 的时候, 数据是编码后提交到 url 请求那里,在地址栏中显示出来,在接受页面可以通过 request.params 得到这些数据。再查看了 163 网页的新闻评论那里,就更加清楚了,他那里 action 指向的就是一个 jsp 文件,静态页面提交的评论数据都是在

9、 jsp 动态页面上处理的了。我的灌水记录 匿名发表 还可以看到的是百度知道中还有这样的代码:这些数据可能是在生成静态页面的时候插进去的,这些 hidden 控件的 value 可以用来在接 受回复的时候区分帖子 ID 等,比如 19229897 这个就是因为 他对应的静态页面是 19229897.html。我还发现一个现象那就是 163 新闻评论的页面,其实也只是第一个页面是静态的而已,如 果一个评论有多页的话,后面的页面也都是 jsp 动态页面了。这也是应该注意的一个地方 吧! 静态页面化应用在象新闻啊这些一发布上去就不会变化的页面比较好一点。如果你的 内容是不断更新很快的,你也采用这种技

10、术,那么就要不断的重写静态 html 页面,那样 IO 操作对服务器性能影响也就很大。所以象索引页这样更新频繁的页面是不能实现静态化 的,象百度知道的主页,如果采用静态页面化的话,那么没当有个人发一个提问,就要重 写一下 html 页面,可能就回很慢了。高手的说法是采用缓存来提高性能,象 CSDN 开发人 员说还说什么双缓存技术啊等等。缓冲页面、数据应该在提高性能方面起很大作用的吧, 有时间要学一学。 好了不说了,说得越多越显得我没有水平_ 写了个实现,验证一下 form 的 action 属性的功能是否象我想的一样可以做静态页面的 评论功能的实现的(其实我之前又再找了下资料,确实是这样子用的

11、,有人也说到了做法, 是我自己太差了,连这么一个普通的属性都不懂) 。 -index.htm 页面 代码- -动态接受页面代码 WebForm1.aspx-WebForm1-动态接受页面代码 WebForm1.aspx.cs- using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using

12、System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace dddddd / / Summary description for WebForm1./ public class WebForm1 : System.Web.UI.Pageprivate void Page_Load(object sender, System.EventArgs e)/ Put user code to initialize the page herestring content = Page.Request.Form“conten

13、t“;if (content != string.Empty) Page.Response.Write (“content=“);Page.Response.Write (content);elsePage.Response.Write (“出现错误“);#region Web Form Designer generated codeoverride protected void OnInit(EventArgs e)/ CODEGEN: This call is required by the ASP.NET Web Form Designer./InitializeComponent();

14、base.OnInit(e);/ / Required method for Designer support - do not modify/ the contents of this method with the code editor./ private void InitializeComponent() this.Load += new System.EventHandler(this.Page_Load);#endregion -动态页面也就是接受到静态页面的数据之后直接输入而已,实际应用中,可能要作些数据 库保存记录,然后根据模板重写 html 文件更新静态页面,然后还可以重定

15、向到这个页面 上去。 需要注意的是,如果在 index.htm 中 form method 指定为 get 的话,那么在动态网页这边只 能使用 Page.Request.Params“content“来获取数据了, 这时 Page.Request.Form“content“等不到数 据了,不过如果 method 指定为 post 的话,应为传上来就是 form 变量,所以 Page.Request.Params“content“和 Page.Request.Form“content“都可以得到数据。不明白就查 一下 method 还有 Request.Params、Page.Request.Form 的区别了。不过我做的时候还发现上面的代码出现回复提交中文的时候出现乱码的情况。明显是编码 问题,在 标签之间加上一句指定网页编码。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号