‘ASP.NET’ 分类的存档
[转载]ASP.NET 路由实现页面静态化(附在线Demo和Source) – keepfool – 博客园. 页面静态化最大的好处是利于SEO,即使是伪静态,搜索引擎也会觉得这是一个较为友好的 Url。Url的友好也取决于其命名,为一篇描述古代文学的页面起名用ancient-literature.html当然比随便起的名字例如 aa.html之流要友好。页面静态化并不代表你一定要用后缀名为.html或.htm的链接来显示你的页面,你完全可以不用任何后缀名(就像MVC一 样),只要Url结构良好。 实现静态化的三个目标: 1. 实现页面静态化,页面中的链接都用.html来表示,但每个.html实际都映射了一个.aspx页面。 例如:当用户请求index.html页面时,实际请求的是Default.aspx页面,index.html的物理路径在网站中并不存在。 2. 实现请求.aspx页面时自动跳转到对应的静态映射页面。 例如:当用户请求Default.aspx页面,自动跳重定向到index.html页面 3. 自定义404页面的实现,当请求的路径既不在映射表中,也不在网站的虚拟路径中时,它将自动跳转到我预先设定好的404页面。 实现以上要点,需要用到ASP.NET Url Routing、HttpHandler和HttpModule技术。 这是一个小系列的文章,这一篇文章将详细解说并实现第1点。 本文已经同步至我的个人博客站点:积累吧|ASP.NET 路由实现页面静态化 源代码下载:http://files.cnblogs.com/keepfool/UrlRouting.zip 在线Demo:http://csdemo.jileiba.com/UrlRouting/ 一、项目创建 1. 创建一个ASP.NET Web Application项目 2. 创建web.config文件 ASP.NET Membership在这里使用不到,所以生成的web.config配置没有用处,删掉它并重新创建一个新的web.config文件 <?xml version=”1.0″?> <configuration> <system.web> <compilation Debug=”true” targetFramework=”4.0″ /> </system.web> </configuration> 3. 将网站添加到IIS6或IIS7中 默认的ASP.NET Web Application已经为我们提供了不少页面,我就在下面的例子中将它们静态化吧。 二、页面静态化实现 1. 添加Routing引用 由于这里需要用到ASP.NET的路由映射(从.NET [...]
[转载]充分利用缓存来提高网站性能 – 阿福 – 博客园. [原文作者]:Omar [原文链接]:Making best use of cache for high performance website 使用URLs时要确保一致性 浏览器基于URL来缓存资源。当URL改变后,浏览器从源服务器获该资源的新的版 本。查询字符串参数的改变也被视为URL的改变。例如,”/default.aspx” 被缓存到浏览器,如果你请求了”/default.aspx?123″,浏览器将从服务器获取新的版本。对于这个新URL的响应,如果你返回的是正确的缓 存报头,它仍然会被缓存。这样的话,再把查询字符串改成类似于”/default.aspx?456”,那么服务器将又返回一个新的版本。因此,当你想响 应得到缓存时,就要确保你在各处使用了一致性的URL。在主页里,如果你请求了一个URL为”/welcome.gif”的文件,那么确保在其他页面里在 请求该文件时也使用相同的URL。常见的一个错误是,有时会从URL中省略”www”子域。www.pageflakes.com/default.aspx与pageflakes.com/default.aspx是不同的,两者会被分别的缓存。 静态内容会被缓存得更久 静态内容可以被缓存得更久,例如一个月。 如果你正考虑应该只缓存几天,以便当你修改文件后,用户可以很快获取到新的版本,那么你错了。如果一个文件是通过设置过期报头(expires header)来缓存的,当你更新它时,新的用户可以立即获取到最新的版本,而老的用户只能看到旧的内容直到它在浏览器端过期。因此,只要你正在使用过期 报头来缓存静态文件,把值设的越大越好。 例如,你已经通过设置过期报头值为3天来缓存一个文件,一个用户将在今天获取到该文件,并且保存在缓存区里直到三天过后;另一个用户将在明天获取到该文 件,并缓存起来直到明天之后的三天。如果你后天改变该文件,第一个用户将在第四天看到它,第二个用户将在第五天看到它。因此,不同的用户将看到该文件的不 同版本。结果是,设置一个低值对于保证所有用户在最短时间内得到最新的版本是没有帮助的。你将不得不通过修改文件的URL来确保所有人立即获得完全相同的 一个文件。 你可以使用IIS管理器来为静态文件设置过期报头,后面的内容将会介绍如何设置。 使用缓存友好的文件夹结构 把要缓存的内容存储在一个共同的文件夹内。例如,把你网站的所有图片存储 在”/static”文件夹内,而不是把图片分别地存储在不同的子文件夹下。这将有助于你在整个网站范围内使用一致性的URL,因为从任何地方你都可以使 用”/static/images/ somefile.gif”。稍后,我们将学到,当把静态缓存文件放在一个共同的根文件夹内后,转移到一个内容传送网络将很容易。 重用相同的图形文件 有时我们把相同的图形文件存储于几个不同的虚拟目录下,以便可以书写很短的路径。例如,你 有一个indicator.gif文件在根目录,一些子目录和CSS目录里。这样做是因为你不必担心从不同地方访问的路径问题,你只需要使用文件名作为相 对URL。这却对缓存没有帮助。文件的每个拷贝都分别地缓存在浏览器端。因此,你应该把工程中所有的图像文件汇集到根目录下的”static”文件夹下, 除去重复的,在所有页面和CSS文件里使用相同的URL。 改变文件名来使缓存过期 当你更改一个静态文件的时候,不要仅仅只是更新文件本身,因为它已经在客户端的浏览器缓存了。你需要更改文件名,并且更新所有各处的引用,这样浏览器才会 获取到新的版本。你也可以把文件名存储在数据库或者配置文件中,通过数据绑定来动态的生成URL。以这种方式,你可以在一处来改变URL,而使整个站点立 即得到更新。 使用版本号来访问静态文件 如果你不想因为要保存同样的文件的不同拷贝而使静态文件夹变得混乱,你可以使用查询 字符串来区分同一文件的各个版本。例如,一个GIF文件可以和一个虚拟的查询字符串组合来访问,如”/static/images /indicator.gif?v=1″。当你更改了indicator.gif,你可以覆盖掉原来的文件,然后把所有到这个文件的引用更新为” /static/images/indicator.gif?v=2″。这样你可以重复修改同一文件,然后用新的版本号来更新所有到这个文件的引用。 把可缓存的文件存储在不同的域中 把静态内容存储在不同的域中,总是不失为一个好的办法。首先浏览器可以打开另外的并发连接来下载静态文件。另一个好处是你不需要发送cookies到静态 文件。如果你把静态文件和你的web应用放在同一域中,浏览器会发送你的web应用产生的所有ASP.NET cookies和所有的其他cookies。这使得请求报头不必要的变大,浪费带宽。访问静态文件时你并不需要发送这些cookies。因此,如果你把静 [...]
[转载]asp.net教程asp.net客户端回调功能的实现机制 – 细细程序员 – 博客园. 实现的过程基本上就是:让要实现客户端回调功能的页面或者空间实现 System.Web.UI.ICallbackEventHandler的接口,即2个方法:void RaiseCallbackEvent(string eventArgument),这个是当客户端触发服务器端事件的委托方法,string GetCallbackResult();这个是返回客户端需要的值,只能是string 型的,当然你也可以返回一个Json串。 然后在 pageload的时候注册脚本到客户端:在这里注册一个CallServer方法来调用服务器端方法,ReceiveServerData来捕获服务器 返回的结果。当然你也可以使用一个方法来捕获服务器端的错误,详见 Page.ClientScript.RegisterClientScriptBlock这个方法的MSDN解释。 这样就能实现客户端的回调服务器端事件,并返回值。 生成好页面后,查看源代码: 首先是多了一个js资源文件,多了一行这样的代码: 在body快结束的时候还有一段这样的代码: WebForm_InitCallback();好,这些应该就是ASP.NET为了实现客户端回调所作的补充工作了吧,咱们来研究吧。 首先看js资源文件(20多K,汗一个…)。先在资源文件里面找到这个方法,WebForm_InitCallback(); 方法如下: function WebForm_InitCallback() { var count = theForm.elements.length; var element; for (var i = 0; i < count; i++) { element = theForm.elements[i]; var tagName = element.tagName.toLowerCase(); if (tagName == "input") { var type [...]
[转载]关于json的一点总结 – 雨蛇竹子 – 博客园. json一般用在少量的数据处理。因为格式简单,操作方便,而且JavaScript本事就支持json格式的处理功能。所以建议大家使用 json一般格式如下:{“id”:”1″,”name”:”abc”}或者[{"id":"1","name":"abc"},{"id":"1","name":"abc"}] 下面是js中几种解释json格式的方法: 1,eval(‘(‘+json+’)’) 为什么这样写:主要是因为在JavaScript中,表达式语句不允许以左花括号”{“开始,如果这样做,会与块语句产生混淆.在使用eval()解析JSON文本时,为了解决这个问题,就需要加上圆括号.圆括号作为分组运算符,可以对包围在其中的表达式求职. 2,var strJSON= (new Function(“return ” + json))(); 通过创建方法的方式解释json 3,var strJSON= JSON.parse(json); 注意:这种方法能够解释的json格式必须键值对都要加双引号,不然解释不了json格式 实例 json.aspx页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="json.aspx.cs" Inherits="web.javascript.json.json" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div id="div1"> </div> <input type="button" id="btn" value="but" /> </form> <script type="text/javascript" src="http://www.cnblogs.com/script/JQuery-1.7.1.min.js"></script> <script type="text/javascript"> [...]
[转载]ASP.NET Web API: 宿主(Hosting) – 张善友 – 博客园. ASP.NET Web API 处理架构中介绍了ASP.NET Web API主 要有三层组成:宿主(hosting),消息处理管道(message handler pipeline)和控制器处理(controller handling),本篇文章主要介绍宿主(Hosting):包括ASP.NET经典管道上的Web Hosting和WCF堆栈的自宿主SelfHosting。 ASP.NET经典管道上的Web Hosting 1、ASP.NET 路由使您可以使用不必映射到网站中特定文件的 URL。 由于该 URL 不必映射到文件,因此可以使用对用户操作进行描述因而更易于被用户理解的 URL,路由在ASP.NET Web API上一样有重要的位置。在ASP.NET平台上,是通过RouteTable的静态属性Routes添加路由到路由表里,例如下面的代码是 ASP.NET MVC项目模板默认定义的路由: protected void Application_Start() { RegisterRoutes(RouteTable.Routes); } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( “Default”, // Route name “{controller}/{action}/{id}”, // URL with parameters [...]


