11 2012 档案

web前端网站优化-你真的不重要了吗?
摘要:有关web前端网站的优化,其实雅虎已经给出了34条建议,我这里有转载雅虎再谈WEB前端网站优化,但是在实际的开发中我们有多少项目中用到这些开发经验了。昨天无意间看一网站感觉很多web开发人员不重视它,所以这里也就这个网站的首页来说说吧。我们还是先来看看几个运行结果图吧:图1:图2:图3:图4:图5:不知道大家看了以上5张图有什么感想,(1)页面默认加载了太多东西,很多资源都可以放到页面load后在加载啊(2)静态资源css、js、图片文件未作合并,应该合并并且压缩这些资源,以减少http请求数目和http返回字节数(3)js应尽量放到页面底部,如果可以的话可以采用延迟加载或者异步加载,因为js 阅读全文

posted @ 2012-11-30 11:41 dz45693 阅读(4796) 评论(20) 推荐(4) 编辑

Asp.net Session认识加强-Session究竟是如何存储你知道吗?
摘要:我们还是简单的来复习一下Session吧:Session的数据时保存在服务器端,并且每个客户端对应不同Session。那么Session究竟是如何保存,如何区分客服端的了?我们还是沿用以前的方法来讲吧,以一个demo开始: 假设我们的请求路径为http://localhost:18385/WebFo 阅读全文

posted @ 2012-11-28 21:11 dz45693 阅读(6408) 评论(10) 推荐(15) 编辑

凡客诚品-工作经历 程序员你有一个感恩的心吗?
摘要:我的cnblogs博客一般都是写些什么技术之类的文章,从来没写过什么非技术之类的东东......,在这里也推广一下我csdn吧:http://blog.csdn.net/dz45693/。我记得我读大学的时候我的一老师告诉我做人应该有一颗感恩的心, 当时我对这句话不是很明白,只是知道作为子女我们应该 阅读全文

posted @ 2012-11-27 22:45 dz45693 阅读(58143) 评论(121) 推荐(11) 编辑

OutputCache缓存设置 条件 Cookies设置缓存无效
摘要:我们知道OutputCache缓存的设置是在OutputCacheModule 的OnLeave方法中,这里面有一个条件判断,只有当 flag = true才会做缓存处理,但是这个条件究竟要做些什么了,为了还理解代码我们把代码调整一下:if (response.HasCachePolicy) { cache = response.Cache; if ( cache.IsModified() && response.Cookies.Count <= 0 && response.StatusCode == 200 && (request.Htt 阅读全文

posted @ 2012-11-26 16:12 dz45693 阅读(3017) 评论(1) 推荐(1) 编辑

OutputCache 缓存key的创建 CreateOutputCachedItemKey
摘要:有关OutputCache的相关资料大家可以查看 OutputCacheProvider OutputCache的一点点认识 ,我们还是复习一下OutputCache内容,OutputCache 的处理是在OutputCacheModule类中注册ResolveRequestCache、UpdateRequestCache这2个方法,一个 用于获取一个用于设置缓存。缓存内容分为两部分,一部分为缓存策略CachedVary,一部分为缓存数据CachedRawResponse,一个页面 缓存策略只有一个CachedVary,但是它却可以有多个缓存内容CachedRawResponse。缓存内容的获 阅读全文

posted @ 2012-11-26 13:01 dz45693 阅读(2883) 评论(1) 推荐(2) 编辑

asp.net mvc源码分析-OutputCache
摘要:在mvc中有一个相对比较独立的类OutputCacheAttribute,一看它的名字我们就知道应该与什么缓存有关了吧。public class OutputCacheAttribute : ActionFilterAttribute, IExceptionFilter 在这个类中涉及到两个重要的东西OutputCacheParameters缓存配置、ObjectCache缓存的管理方式,这两个主要是用来干什么的我们后面再说吧。OutputCacheAttribute继承于ActionFilterAttribute特性,那么我们就来看看它那4个方法是怎么实现的吧: public ... 阅读全文

posted @ 2012-11-23 18:21 dz45693 阅读(4876) 评论(7) 推荐(1) 编辑

php Collection类的设计
摘要:用。net开发已经很多年了,最近接触到php,发现php也很好玩。不过发现它里面没有集合Collection类,只有数组,并且数组很强。这里我用数组来包装成一个集合Collection,代码如下:class Collection{ private members=array();publicfunctionaddItem(obj,$key=null) { if($key) { if(isset(this>members[key])) { throw new exception("Key \"$key\" already in use!&q 阅读全文

posted @ 2012-11-23 08:49 dz45693 阅读(3224) 评论(6) 推荐(3) 编辑

Asp.Net MVC 项目预编译 View
摘要:最近做项目是遇到一个问题,在我们的view中经常遇到一些匿名类型对象,然后在通过RenderPartial输出这些对象。还是举个例子吧,有3个view Index.cshtml、Test.cshtml、Test2.cshtml它们的层次结构如图:它们的代码如下:Index.cshtml@{ Layout = null; var obj = new[] { new {name="majiang",age=27}, new {name="luyang",age=26} };}<!DOCTYPE html><html><head& 阅读全文

posted @ 2012-11-22 11:19 dz45693 阅读(4258) 评论(5) 推荐(3) 编辑

asp.net mvc源码分析-Route的GetRouteData
摘要:我知道Route这里东西应该算路由,这里把它放到mvc里面有些不怎么合适,但是我想大家多数遇到路由都是在mvc的时候吧.首先我们还是来看看GetRouteData方法吧public override RouteData GetRouteData(HttpContextBase httpContext){ string virtualPath = httpContext.Request.AppRelativeCurrentExecutionFilePath.Substring(2) + httpContext.Request.PathInfo; RouteValueDictionar... 阅读全文

posted @ 2012-11-21 13:46 dz45693 阅读(5229) 评论(3) 推荐(1) 编辑

asp.net mvc源码分析-DefaultModelBinder 集合绑定
摘要:接着上篇关于数据绑定的asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证里面只讲了复杂数据类型的绑定,还有上面集合、字典等这些数据这么绑定的了。说到集合绑定其实网上已经有很多关于它的介绍通过实例模拟ASP.NET MVC的Model绑定机制:数组。这个我先举一个使用例子吧:后端代码:前端代码:运行结果:好,现在让我们来看看集合的数据究竟是怎么绑定的吧:在BindComplexModel方法中有这么一段: Type enumerableType = TypeHelpers.ExtractGenericInterface(modelType, t 阅读全文

posted @ 2012-11-20 22:23 dz45693 阅读(3094) 评论(0) 推荐(0) 编辑

asp.net mvc源码分析-EditorFor
摘要:在我们的mvc日常开发会经常遇到什么LabelFor、EditorFor、Editor等等,这个扩展方法有很多是相似的。这里我们以EditorFor来说说吧,我觉得这个相对要复杂一点。首先我们来看看EditorFor的定义:public static MvcHtmlString EditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object additionalViewData) { return 阅读全文

posted @ 2012-11-20 16:55 dz45693 阅读(4671) 评论(0) 推荐(1) 编辑

asp.net mvc RouteCollection的RouteExistingFiles属性理解
摘要:RouteCollectiond的RouteExistingFiles属性一看这个名字,我想大家就能猜出来它的意思,对静态资源是否启用路由。我在Asp.net Web.config文件读取路径你真的清楚吗? 里面做demo时遇到这样一个问题:项目结构如下:我原本是用来让程序读views/channel/men/web.config文件,当我添加了men文件夹后,整过路由都出错了。我的路由代码: routes.MapRoute("channelDefault", "{ChannelName}/{action}", new { controller = &q 阅读全文

posted @ 2012-11-19 16:43 dz45693 阅读(4983) 评论(6) 推荐(1) 编辑

Asp.net mvc View动态编译要小心啊
摘要:我们公司的项目是用asp.net mvc Razor开发的,先看看带代码吧:var itemRef = "P43_1"; try {var expermentCode = "PLE0043";itemRef = Html.ViewContext.HttpContext.Request.QueryString["itemCode"];//预留后门itemCode是ref值if (string.IsNullOrEmpty(itemRef)){string itemCode = PageLabHelper.GetExperimentItem 阅读全文

posted @ 2012-11-19 09:19 dz45693 阅读(3997) 评论(11) 推荐(1) 编辑

Asp.net Web.config文件读取路径你真的清楚吗?
摘要:我们经常都在用ConfigurationManager的AppSettings和ConnectionStrings属性,当一个项目中有很多Web.config时它们的读取顺序究竟是怎么的了?也许我们可以通过实验得出一些结论,但我这里仅从源代码上来分析一下。无论是ConfigurationManager的AppSettings还是ConnectionStrings属性都在调用方一个共同的方法GetSection。从GetSection方法我们知道他主要是调用IInternalConfigSystem实例的GetSection方法,在这里用实例的GetSection方法之前它调用了一个Prepar 阅读全文

posted @ 2012-11-16 16:21 dz45693 阅读(6014) 评论(8) 推荐(3) 编辑

asp.net mvc源码分析-ModelValidatorProviders
摘要:在上篇文章asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证最后提到了ModelValidatorProviders ,这里我们以DataAnnotationsModelValidatorProvider来说说整过的验证过程。因为 DataAnno 阅读全文

posted @ 2012-11-14 16:39 dz45693 阅读(3465) 评论(0) 推荐(0) 编辑

asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证
摘要:在前面的文章中我们曾经涉及到ControllerActionInvoker类GetParameterValue方法中有这么一句代码: ModelBindingContext bindingContext = new ModelBindingContext() { FallbackToEmptyPrefix = (parameterDescriptor.BindingInfo.Prefix == null), // only fall back if prefix not specified ModelMetadata = ModelMetadataProviders.... 阅读全文

posted @ 2012-11-14 11:44 dz45693 阅读(3192) 评论(0) 推荐(0) 编辑

asp.net mvc源码分析-AsyncController
摘要:我们前面的讲的都是基于同步的Controller来实现,现在我们来看看基于异步的AsyncController又是如何实现的。首先看一个demo吧:public voidIndexAsync() { //实现异步action加计数1 FileStream fileStream = new FileStream(@"D:\channel.txt", FileMode.Open); byte[] byteArray = new byte[fileStream.Length]; fileStream.BeginRead(byteArray, 0, ... 阅读全文

posted @ 2012-11-13 16:11 dz45693 阅读(2708) 评论(0) 推荐(2) 编辑

asp.net mvc源码分析-BeginForm方法 和ClientValidationEnabled 属性
摘要:在上篇文章asp.net mvc源码分析-RenderAction和RenderPartial我们提到了一个常用的RenderAction方法,除了它我们还会经常遇到表单提交,这时我们通常会用到BeginForm。让我们来看看你BeginForm是如何使用的运行结果就是生成form表单一般我们的表单提交都涉及到强类型,所以一般需要@model MvcApp.Controllers.UserInfo指令,那我们来看看你用@using (Html.BeginForm()) 和Html.BeginForm();、Html.EndForm();这两种用法有什么区别。我们找到BeginForm返回的是一 阅读全文

posted @ 2012-11-13 14:04 dz45693 阅读(2361) 评论(4) 推荐(0) 编辑

asp.net mvc源码分析-RenderAction和RenderPartial
摘要:截止上篇文章asp.net mvc源码分析-ActionResult篇 RazorView.RenderView相信大家对mvc的大致流程应该有所了解。现在我们来看看我们在mvc开发中用的最多的几个方法,我想排在第一的应该是Html.RenderAction和Html.RenderPartial吧。先说简单的吧:RenderPartial和Partialpublic static voidRenderPartial(this HtmlHelper htmlHelper, string partialViewName, object model, ViewDataDictionary viewD 阅读全文

posted @ 2012-11-12 22:28 dz45693 阅读(2491) 评论(3) 推荐(0) 编辑

asp.net mvc源码分析-ActionResult篇 RazorView.RenderView
摘要:接着上文asp.net mvc源码分析-ActionResult篇 FindView我们已经创建好view了,大家还记得在BuildManagerCompiledView的Render方法中最后调用的是RenderView。可能是跟人喜好问题,还有就是我工作项目用到的多数是Razor,所以这里就讲讲RazorView吧。想让我们可看看RazorView的构造函数有什么特别的地方 public RazorView(ControllerContext controllerContext, string viewPath, string layoutPath, bool runViewStartP. 阅读全文

posted @ 2012-11-11 16:50 dz45693 阅读(2303) 评论(0) 推荐(2) 编辑

asp.net mvc源码分析-ActionResult篇 FindView
摘要:接着上篇asp.net mvc源码分析-ActionResult篇 ViewResult中有ViewEngineResult result = ViewEngineCollection.FindView(context, ViewName, MasterName)这么一句,它究竟是怎么找到View的了?首先放我们看看你ViewEngineCollection中的FindView方法吧,其实就一句return Find(e => e.FindView(controllerContext, viewName, masterName, true), e => e.FindVie... 阅读全文

posted @ 2012-11-11 15:03 dz45693 阅读(2691) 评论(2) 推荐(3) 编辑

asp.net mvc源码分析-ActionResult篇 ViewResult
摘要:接着上篇文章asp.net mvc源码分析-Action篇 Action的执行,现在Action已经执行并且返回结果,在ControllerActionInvoker.InvokeAction方法中ActionExecutedContext postActionContext = InvokeActionMethodWithFilters(controllerContext, filterInfo.ActionFilters, actionDescriptor, parameters);这句已经执行完毕,现在看看InvokeActionResultWithFilters(controllerC 阅读全文

posted @ 2012-11-11 11:04 dz45693 阅读(2988) 评论(0) 推荐(2) 编辑

asp.net mvc源码分析-Action篇 Action的执行
摘要:接着上篇asp.net mvc源码分析-Action篇 DefaultModelBinder我们已经获取的了Action的参数,有前面的内容我们知道Action的调用时在ControllerActionInvoker类的InvokeActionMethod方法。protected virtual ActionResult InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary<string, object> parameters) { 阅读全文

posted @ 2012-11-10 23:15 dz45693 阅读(1894) 评论(0) 推荐(1) 编辑

asp.net mvc源码分析-Action篇 DefaultModelBinder
摘要:接着上篇asp.net mvc源码分析-Controller篇 ValueProvider现在我们来看看ModelBindingContext这个对象。ModelBindingContext bindingContext = new ModelBindingContext() { FallbackToEmptyPrefix = (parameterDescriptor.BindingInfo.Prefix == null), // only fall back if prefix not specified ModelMetadata = ModelMetadataP... 阅读全文

posted @ 2012-11-10 21:05 dz45693 阅读(1989) 评论(0) 推荐(1) 编辑

asp.net mvc源码分析-Controller篇 ValueProvider
摘要:在上篇文章asp.net mvc源码分析-Action篇 IModelBinder中我们提到了ValueProvider,其实这个东西是Controller的属性,在写前面Controller的是曾打算把它写书来,后来有以下在后面用的时候在写它相关的东东吧,需求才能推动发展啊。先说明一下这个属性石很重要的,Action参数的值最总都是通过它来获取的。 public IValueProvider ValueProvider { get { if (_valueProvider == null) { _valueProvider = ValueProvide... 阅读全文

posted @ 2012-11-10 12:39 dz45693 阅读(2386) 评论(4) 推荐(1) 编辑

asp.net mvc源码分析-Action篇 IModelBinder
摘要:紧接着上篇asp.net mvc源码分析-Action篇 ParameterDescriptor文章 在ReflectedParameterBindingInfo有这个public override IModelBinder Binder属性,同时在ControllerActionInvoker中也有一个类似的protected internal ModelBinderDictionary Binders看见这两个属性名称我们就应该知道ModelBinderDictionary是IModelBinder的一个集合类,public class ModelBinderDictionary : ID 阅读全文

posted @ 2012-11-10 09:42 dz45693 阅读(2093) 评论(0) 推荐(4) 编辑

asp.net mvc源码分析-Action篇 ParameterDescriptor
摘要:紧接着上篇asp.net mvc源码分析-Action篇 Filter中提到了IDictionary<string, object> parameters = GetParameterValues(controllerContext, actionDescriptor);首先这个方法的目的很明白获取当前Action参数名称和值得一个字典。protected virtual IDictionary<string, object> GetParameterValues(ControllerContext controllerContext, ActionDescriptor 阅读全文

posted @ 2012-11-09 23:04 dz45693 阅读(2252) 评论(2) 推荐(2) 编辑

asp.net mvc源码分析-Action篇 Filter
摘要:紧接着上篇asp.net mvc源码分析-Controllerl篇 ControllerDescriptor现在我们该看 FilterInfo filterInfo = GetFilters(controllerContext, actionDescriptor);这句代码了,意思很好明白就是获取当前的FilterInfo信息,而该方法非常简单就一句return new FilterInfo(_getFiltersThunk(controllerContext, actionDescriptor));首先我们来看看_getFiltersThunk是个上面东西:private Func<C 阅读全文

posted @ 2012-11-09 17:16 dz45693 阅读(2493) 评论(0) 推荐(3) 编辑

asp.net mvc源码分析-Controllerl篇 ControllerDescriptor
摘要:在上篇asp.net mvc源码分析-Controllerl篇 TempData数据存储我们讲到了ActionInvoker.InvokeAction(ControllerContext, actionName)这句,当时跳过了,现在我们首先来看看ActionInvoker属性的定义吧: public IActionInvoker ActionInvoker { get { if (_actionInvoker == null) { _actionInvoker = CreateActionInvoker(); } retu... 阅读全文

posted @ 2012-11-09 11:01 dz45693 阅读(2208) 评论(5) 推荐(3) 编辑

asp.net mvc源码分析-Controllerl篇 TempData数据存储
摘要:本些列文章是以asp.net mvc源代码为例按照asp.net mvc执行顺序一一分析和解释。上篇文章asp.net mvc源码分析-Controllerl篇 如何创建Controller实例讲到了如何创建Controller,在创建后就调用 controller.Execute(RequestContext);在ControllerBase的Execute方法很简单VerifyExecuteCalledOnce(); // 确保一个controller实例只调用一次, Initialize(requestContext);//初始化ControllerContext = new C... 阅读全文

posted @ 2012-11-08 23:53 dz45693 阅读(2845) 评论(2) 推荐(2) 编辑

asp.net mvc源码分析-Controllerl篇 如何创建Controller实例
摘要:在上一篇文章asp.net mvc源码分析-路由篇 如何找到 IHttpHandler中最后提到了MvcHandler,来上我们看看它的定义public classMvcHandler : IHttpAsyncHandler, IHttpHandler, IRequiresSessionState它有几个比较重要的属性:internal ControllerBuilder ControllerBuilder ,ControllerBuilder 类主要负责创建IControllerFactorypublic RequestContext RequestContext,RequestContex 阅读全文

posted @ 2012-11-08 15:40 dz45693 阅读(2452) 评论(0) 推荐(3) 编辑

asp.net mvc源码分析-路由篇 如何找到 IHttpHandler
摘要:学习是使用asp.net已经有很长一段时间了,现在就来分析一下mvc的整过过程吧。个人计划写一个mvc系列的博文,仅从源代码的角度来分析mvc。在接触mvc时我们一定会经历路由,那么路由这东东是怎么搞出来的啊。在我们的web.config中有这么一句:<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />看来路由是它咋负责了。在这个dll中有一个很特殊的类UrlRoutingModule我们来看看它里面主要的核 阅读全文

posted @ 2012-11-08 13:24 dz45693 阅读(2722) 评论(6) 推荐(5) 编辑

HttpWebRequest开启gzip压缩
摘要:在用HttpWebRequest对象时,一般我们都没有开启gzip压缩,如果服务端返回的数据比较大,这是我们需要开启gzip压缩,怎么开启了?1.给HttpWebRequest对象,添加如下Header request.Headers.Add("Accept-Encoding", "gzip");2.对接收到的流进行解码private string GetResponseBody(HttpWebResponse response){string responseBody = string.Empty;if (response.ContentEncodin 阅读全文

posted @ 2012-11-07 21:21 dz45693 阅读(2781) 评论(0) 推荐(1) 编辑

OutputCacheProvider OutputCache的一点点认识
摘要:在asp.net4.0后我们可以实现自己的OutputCacheProvider来控制缓存的位置了,但是我发现很多人多OutputCacheProvider的调用并不是很清楚。首先我们要知道缓存是在哪里注册的。答案是OutputCacheModulevoid IHttpModule.Init(HttpApplication app){ if (RuntimeConfig.GetAppConfig().OutputCache.EnableOutputCache) { app.ResolveRequestCache += new EventHandler(this.OnEnter); ... 阅读全文

posted @ 2012-11-07 15:51 dz45693 阅读(3438) 评论(3) 推荐(1) 编辑

HttpResponse的Output与OutputStream、Filter关系与区别
摘要:在网上经常看见有这样的代码 HttpResponse response = HttpContext.Current.Response; response.Filter = new PageFilter(response.Filter);来拦截输出流,自己也做个类似的东东,如asp.net中 js 合并 压缩,现在我也来说说这几个东东是什么吧,需要大家对asp.net的生命周期比较熟悉,如不熟悉的朋友建议先看看ASP.NET 请求处理流程ASP.NET管线与应用程序生命周期首先我们来看看这3个属性的源代码吧:public TextWriter Output{ get { return ... 阅读全文

posted @ 2012-11-06 20:38 dz45693 阅读(2618) 评论(0) 推荐(0) 编辑

Asp.net请求处理之 管道处理
摘要:在了解Asp.net请求处理流程的过程中,个人认为有必要从源代码的角度来了解asp.net管道是怎么实现的。在此之前大家有必要了解一些asp.net请求流程的基本东东,如ASP.NET 请求处理流程、Asp.net管道、ASP.NET管线与应用程序生命周期我们大家都知道HttpRuntime主要的方法是public static void ProcessRequest(HttpWorkerRequest wr)private void ProcessRequestInternal(HttpWorkerRequest wr){ HttpContext context; try ... 阅读全文

posted @ 2012-11-06 17:34 dz45693 阅读(4039) 评论(3) 推荐(5) 编辑

HttpRequest this属性
摘要:我们在做asp.net的时候往往要取客户端的数据。一般的写法都是 var q = Request.QueryString["xxx"]; var f = Request.Form["xxx"]; var c = Request.Cookies["xxx"].Value; var s = Request.ServerVariables["xxx"];而我一般的写法是 var val = Request["xxx"];虽然这种写法很简单但是问题也比较突出,如果QueryString、Form、Coo 阅读全文

posted @ 2012-11-05 22:49 dz45693 阅读(1437) 评论(0) 推荐(0) 编辑

HttpRequest的QueryString属性 的一点认识
摘要:我们开发asp.net程序获取QueryString时,经常性的遇到一些url编码问题,如:当然我们一般都是按照提示来把framework版本设置2.0来解决。为什么可以这么解决了,还有没有其它的解决方法了。先让我们看看QueryString的源代码吧:public NameValueCollection QueryString{ get { if (this._queryString == null) { this._queryString = new HttpValueCollection(); if (t... 阅读全文

posted @ 2012-11-05 17:29 dz45693 阅读(5029) 评论(12) 推荐(6) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示