DTcmsV4.0分析学习——(3)URL重写

3.URL重写

3.1 控制流程

通过IHttpModule控制所有页面请求,具体流程如下

 

(1)真实路径可正常访问

(2)前台页面通过URL重写映射aspx目录,后台页面通过URL重写映射admin目录,插件页面通过URL重写映射plugins目录,静态页面通过URL重写映射html目录

(3)xmlconfig/urls.config 是URL重写规则的XML配置文件,使用缓存依赖优化性能

 

URL重写与MVC路由在功能上很相似,但两者其实并不相同,区别在于,URL重写是将一个URL映射到另一个URL,而路由则是将URL映射到资源。

 

3.2 源码分析 

3.2.1 URL字典

读取URL配置文件,使用缓存(文件依赖- xmlconfig/urls.config),并使用单例模式。

使用volatile定义变量,读取这个变量的值时候每次都是从momery里面读取而不是从cache读。这样做是为了保证读取该变量的信息都是最新的,而无论其他线程如何更新这个变量。

上面是DTcms的写法,但有一个问题就是每次返回时首先要上锁再判断,这样就牺牲了一些本来不必牺牲的性能,因此,可以优化代码:

添加的外层的if语句块,这是为了使得每个线程欲获取实例时不必每次都得加锁,因为只有实例为空时(即需要创建一个实例),才需加锁创建,如果已存在一个实例,就直接返回该实例,节省了性能开销。

 

转载于:https://www.cnblogs.com/hifor/p/4572009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动力启航是一个以ASP.NET(C#)+jQuery技术为中心,面向软件开发者、程序爱好者、网页设计师,服务于个人、企业的网站。DTcms系统采用ASP.NET(C#)+jQuery,同时结合AJAX技术开发。具备友好的操作界面,高用户体验且备受欢迎的BS模式网站内容管理系统。 DTCMS网站内容管理系统 4.0 ACCESS 更新日志:2015-06-09 1、修复后台导般菜单管理上传图标成功后没有回调地址BUG 2、修复后台非超级管理员后台回复评论时提示无权限BUG 3、修复后台上传文件大小设置为0时上传附件失败BUG) 4、修复ACCESS分页显示错误的BUG 功能特性: 轻量级架构 100%免费开源 轻量级架构,全面适合中小型资讯、企业站。秉承DT人的精神坚持开源免费使用,互相学习,共同进度。 自定义频道 不一样的风格 DTcms可随用户需求自主建立不同的频道,配备四大功能模块供选择,每个频道分别定义不同的模板风格。 可插拨插件 拓展更简单 DTcms实现了可插可拔插件,可以实现插件的启用或者停用,提供插件开发帮助手册,鼓励用户开发插件。 程序模板分离 语法更简单 程序和页面彻底分离,模板机制使用简单,源自于Discuz! NT的灵感改进,轻松解决页面制作问题。 URL重写 可配置成伪静态 全站配置URL重写、首页生成静态开关,后台配带自定义URL重写功能,更加个性化配置网站URL地址。 支持多图多附件 轻松上传 图文模块支持多图选择上传,下载模块支持多附件上传,全面满足用户各种需求。 图片限制 超出自动裁剪 网站后台配置可自定义图片上传的最大尺寸,超出自动裁剪。解决用户不会通过图片裁剪工具处理问题。 SEO优化更自主 内置SEO选择,对于追求搜索引擎优引的用户提供更为自主的选择,轻松调用SEO信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值