Asp.net .net/iis6 web.config中url映射对无扩展url重写的限制
我正在研究iis6/NET2.0站点的简单url重写设置 我加了一个。IIS中指向.net可执行文件的通配符映射。我还在web.config中使用urlMappings元素添加一些重写的URL。我已将配置移到web.config之外,以便在不强制应用程序重新启动的情况下对列表进行更改,如下所示:Asp.net .net/iis6 web.config中url映射对无扩展url重写的限制,asp.net,iis-6,Asp.net,Iis 6,我正在研究iis6/NET2.0站点的简单url重写设置 我加了一个。IIS中指向.net可执行文件的通配符映射。我还在web.config中使用urlMappings元素添加一些重写的URL。我已将配置移到web.config之外,以便在不强制应用程序重新启动的情况下对列表进行更改,如下所示: <urlMappings configSource="config\urlMappings.config"> </urlMappings> 我想允许我们的内容管理向
<urlMappings configSource="config\urlMappings.config">
</urlMappings>
我想允许我们的内容管理向这个文件添加URL,这样我们就可以有无扩展友好的URL
<add url="~/someurl" mappedUrl="index.aspx?page=123" />
这很好,但我担心在urlMappings配置中可以映射的条目数量的限制。我似乎找不到关于这个的任何文件。有人发现了什么限制吗
谢谢。看看房间里面
我看到
你指望什么
来自虚拟世界的东西没有限制
URL的数量。
我认为虚拟机对您可以加载的数量没有限制
加载时间
加载延迟仅在web上,然后保持为静态值,并且仅在您更改web.config或重新启动应用程序时重新加载
记忆
您有一个静态集合,其中包含在每个请求开始时调用的所有数据。取决于要在web.config上加载的数据量
搜索时间
根据我的研究,的搜索时间不是使用任何散列方法来完成的,但是他们将字符串一个接一个地进行比较,所以这里可能有一个小问题
这是对每个url进行大量搜索的代码
internal string HttpResolveMapping(string path)
{
string mappedUrl = null;
string str2 = UrlPath.MakeVirtualPathAppRelative(path);
UrlMapping mapping = this.UrlMappings[str2];
if (mapping != null)
{
mappedUrl = mapping.MappedUrl;
}
return mappedUrl;
}
这里的UrlMapping=this.UrlMappings[str2]正在呼叫
protected internal ConfigurationElement BaseGet(object key)
{
foreach (Entry entry in this._items)
{
if ((entry._entryType != EntryType.Removed) && this.CompareKeys(key, entry.GetKey(this)))
{
return entry._value;
}
}
return null;
}
我需要进一步检查一下,但我认为在搜索url映射时存在一个问题
在现实生活中
最近我优化了类似的数据库调用代码。在一个类似的循环中,我将速度从500毫秒降低到150毫秒到200毫秒,这在几秒钟内被称为20.000-50.000次
在您的情况下,我不认为此路由在一次页面调用中调用超过100-200次。(我说100是因为您将所有调用重定向到asp.net,甚至是图像)
因此,我认为这实际上取决于你赢得网站的速度,但是你的用户我不认为他们注意到了不同的速度,在这一点上你只会快10-20-30毫秒-我们只会在你有大量URL(可能超过1500个URL)的情况下发言
同时调用包含内容的第一个页面,然后从这个循环中搜索,返回页面,然后图像随之出现,因此用户只会在页面的前1-5个调用延迟上看到不同,并且不理解图像上的小延迟
这里的优化只会在程序上进行测量,而不会被用户理解
这里的时间是根据我在电脑上(速度较慢)的经验而来的,只是给人我的经验的感觉
再多说几句
我认为urlMapping是一个现成的解决方案,可以帮助任何人开始,但如果一些人有时间,知识和资源是值得的,以修复自己的url映射,使它在他的需要和超快速,如果他喜欢。对于start来说,有urlMapping是很好的,但是如果您需要一些更高级的想法,那么您可以在以后的项目更大时更新它
我是速度的粉丝,在电脑上等待的每一秒都是我们生命中的一秒。
然而,如果你很容易使用urlMapping,那就去做吧,让网站运行起来,几个月后再检查一遍。是的,这个集合可能可以容纳无限多的项目,但我很好奇在实际层面上是否会有一个(专业)演出issue@ScottE我已经输入了更多的信息。谢谢你如此全面地挖掘,亚里士多德。您是否有在大量URL中使用URL映射的经验?比如说,在500-1000范围内?@ScottE是的,我不仅对url有很多经验,而且对许多类似的循环也有很多经验。速度上的不同是很难注意到的,只有在我优化了太多的代码之后,我才能看到不同。不仅有一点需要快速,几乎所有的点都必须非常快。另外,我在许多方面都使用小型缓存例程来加速思考。@ScottE我不知道您的程序,也不知道在用户看到某些内容之前,您将调用500-1000循环多少次,但我认为至少在一开始,您对这部分没有问题。