摘要:
受到了来自互联网上的技术文章和blog上的启发,让我编程的时间过的很快,怎么也要回报一些自己的想法和应用方面的心得,一来,自己做一个总结,二来为向我一样的新手不必再“往返”在黄页和互联网搜不到的苦恼。希望大家提出有问题的地方,我会继续提高!
这篇主要讨论页面静态化的方法。
希望有更多的网友来参与这个问题的看法。
What?
我们去看在web有着古老而又深得人心的各大门户网站。see 一 see 大型门户网站,这些程序员们是如何的设计的网站静态化呢?
Yes! 据阿里巴巴的静态的html 上的 js 函数显示
抽取url方法(extractUrl)
1<script language="javascript" type="text/javascript">
2//抽取url
3//1.unescape() 对其解码,将十六进制的url 进行uncode解码
4// Visit%20W3School%21
5// Visit W3School!
6//2.说明:
7//该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和
8//\uxxxx 替换这样的字符序列进行解码。
9//提示和注释
10//注释:ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和
11//decodeURIComponent() 取而代之。
12
13function extractUrl(url){
14 url = url+"";
15 var index1 = url.indexOf("&trurl=");
16 var index2 = url.indexOf("&",index1+3);
17 if(index1!=-1 && index2 !=-1)
18 url = url.substring(index1+7, index2);
19 if(index1!=-1 && index2 ==-1)
20 url = url.substring(index1+7);
21 url = unescape(url);
22 return url;
23}
24function signin(){
25 // 防止别站点剽窃,所以就有这么个发信号的函数来转到主页
26 if(top.location != self.location){
27 var url = "https://login.alibaba.com" + "?Done=" + escape(extractUrl(self.location));
28 top.location = url;
29 }
30 else{
31 var url = "https://login.alibaba.com" + "?Done=" + escape(document.location);
32 gotoUrlForReferrer(url);
33 }
34}
35</script>
36//一个分页
37<script language="javascript">
38 function gotoPage(){
39 var formatString = '\/trade\/sample\/new\/0.html?cd=0&n=10&h=false&date=2009-09-07&begin_page={0}';
40 var gotopage=document.getElementById('gotopage')
41 if(!isNumber(gotopage.value)){
42 alert('Please input valid page number !');
43 return;
44 }
45 var page = parseInt(gotopage.value);
46 if(page < 1 || page > 248){
47 alert('Please input valid page number !');
48 return;
49 }
50 var gotoUrl = formatString.replace("{0}",page);
51 gotoUrlForReferrer(gotoUrl);
52 }
53 </script>
54//location.search是从当前URL的?号开始的字符串截取 url传递过来的参数
55//通过这个函数就可以轻易取到连接后面带的参数,这个可用于父窗口向子窗口传递参数
56//获取页面的ID
57<script type="text/javascript">
58 var params= window.location.search;//params:?id,date
59
60 var arr = params.substring(1).split(",");
61
62 var id = arr[0];
63</script>
浪费了一些时间用来做马后炮的分析了,那么我们来总结一下!
想163 sohu等站,评论、新闻 快速及时显示是如何做到的呢?
可以分为:根据url生成和根据内容生成 还有一个是比较简单的url重写功能。
介绍:ASP.NET 2.0 URL 重写 技术可以实现url的友好性,
web.config 构建重写规则{巧妙而又利于通用的正则表达式来帮助你解决这个问题}
UrlRewriter.NET 截取Web请求并重写之
http://msdn.microsoft.com/zh-cn/library/ms972974.aspx介绍:根据url生成
将动态页面的内容写成一个动态文件,将这个静态的文件做首页,自己定时去生成这个文件就可以了
介绍:根据内容生成
利用数据流写一个生成静态页面的方法,页面的源代码作为
将源文件保存为一个静态的html文件,将此文件作为首页
Why do this?
可用性专家 Jakob Neilsen 建议遵循以下标准来选择 URLc:
我还要增加一条标准,即,URL 应该便于记忆。
How?c
重写技术来让你的内容页面不再有.aspx?id=value
伪静态重写规则
1<!--设置 URL 伪静态重写规则-->
2 <RewriterConfig>
3 <Rules>
4 <!--以下这个节点匹配所有的“/xxx.aspx?id=n”,其中“n”为整数-->
5 <RewriterRule>
6 <LookFor>~/(.*[^-])-(\d+).aspx</LookFor>
7 <SendTo>~/$1.aspx?id=$2</SendTo>
8 </RewriterRule>
9 </Rules>
10 </RewriterConfig>
11<!--伪静态设置 - 此设置使 UrlRewriter.NET 截取Web请求并重写之 - 这部分必须放在 System.Web 内-->
12 <roleManager enabled="true"/>
13 <httpHandlers>
14 <add path="*.aspx" verb="GET,POST" type="URLRewriter.RewriterFactoryHandler, URLRewriter"/>
15 <remove verb="*" path="*.asmx"/>
16 <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
17 <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
18 <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpHandlers>
到这个基础上举一反三,首页的look效果告知asp.net 和 iis 那么一切微妙的url 地址都可以应付。
2:按照模版生成静态页面
http://topic.csdn.net/u/20081102/20/ff283d7e-f1f3-49e8-8977-c07fe95d328d.html
今天写到这里,以后完善。。。