Взгляд внутрь urlMapping
Я вижу, что mappedUrl
хранятся на UrlMappingCollection
которые исходят из ConfigurationElementCollection , которые виртуальные не имеют ограничений.
Количество URL.
Я думаю, что у виртуальных нет предела тому, сколько вы можете загрузить.
Время загрузки
Задержка загрузки зависит только от состояния сети, затем она остается на статическом значении и перезагружается только при изменении 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 mapping = 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, сделайте это в своих нуждах и очень быстро, если он как. Для начала хорошо иметь urlMapping, но если вам нужны более продвинутые идеи, вы можете обновить их позже, когда ваш проект станет больше.
Я фанат скорости, каждая секунда ожидания на компьютере - это секунда нашей жизни.
Как бы то ни было, если вам легко использовать urlMapping, просто сделайте сайт работоспособным, а затем через несколько месяцев вы снова проверите его.