查看urlMapping 内部
我看到mappedUrl
存储在UrlMappingCollection
来自ConfigurationElementCollection 的虚拟没有限制。
网址数。
我认为虚拟可以加载的数量没有限制。
加载时间
加载延迟仅在声明 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 映射存在问题。
现实生活中
最近我为数据库调用优化了类似的代码。我在一个类似的循环中将速度从 500ms 降低到 150ms-200ms,该循环在几秒钟内被称为 20.000-50.000 次。
在您的情况下,我认为此路由不会在页面调用中调用超过 100-200 次。 (我说 100 是因为您将所有调用重定向到 asp.net,甚至是图像)
所以我认为这真的取决于你赢得网络的速度有多快超级,但我认为你的用户并没有注意到不同,在这一点上,您只会更快获得 10-20-30 毫秒 - 只有当您拥有大量 url(可能超过 1500 个 url)时,我们才会说话。
还调用了包含内容的第一个页面,然后从此循环中搜索,返回页面,然后是图像,因此用户只会在页面的前 1-5 次调用延迟和不明白图像上的小延迟。
这里的优化只是在程序上衡量的,不会被用户理解。
这里的时间来自我在(慢速)计算机上的经验,并且仅给出我的经验感。
多说几句
我认为 urlMapping 是一个随时可用的解决方案,可以帮助任何人开始使用,但如果有些人有时间知识和资源值得修复他自己的 url 映射,那么在他的需要和超快速如果他喜欢。开始时有 urlMapping 很好,但如果您需要一些更高级的想法,那么您可以稍后在项目变得更大时更新它。
我是速度的粉丝,在电脑上等待的每一秒都是我们生命中的一秒。
无论如何,如果您使用 urlMapping 很容易,只需做到这一点,使网站可以运行,然后在几个月后再次检查它。