Будет ли это глобальным для всего сайта?

Мне нужно загрузить xml-файл в память и сделать его доступным по всему миру для всего сайта. Выполняет ли этот код это?

Если да, то как обновляется эта «кэшированная» версия, выполненная в будущем?

XPathDocument ConvProductDoc;

    ConvProductDoc = Cache["doc"] as XPathDocument;
    if (ConvProductDoc == null) {
        ConvProductDoc = new XPathDocument(HttpContext.Current.Request.MapPath(@"\data\foo\bar\my.xml"));
        Cache.Insert("doc", ConvProductDoc);
    }
0
nl ja de
зависит от того, каков Cache и как настроен ваш сайт.
добавлено автор Jodrell, источник
Хорошо, пожалуйста, простите мое невежество, есть ли ссылка, которая может объяснить, что вы предлагаете дальше?
добавлено автор user416527, источник

2 ответы

Да, объект ASP.NET Cache - это сайт. Существует множество опций для управления Cache и установкой правил истечения срока действия и т. Д.

Чтобы назначить/обновить значение в Cache , вы просто установите его так, как если бы вы указали значение Dictionary или HashTable :

Cache["doc"] = newValue;

You can read a lot more about the Cache object in the MSDN Docs here: http://msdn.microsoft.com/en-us/library/aa478965.aspx#aspnet-cachingtechniquesbestpract_topic4

1
добавлено
Фактически нет, объект кэша для каждого пула, если вы используете два пула для запуска своего сайта на одном компьютере, тогда у вас есть два разных объекта кеша.
добавлено автор Aristos, источник
@BrianS Да, если вы ищете веб-сад, вы увидите, как это сделать. В случае веб-сада и веб-фермы только файловая система (и/или общая база данных) может быть одинаковой для всех приложений.
добавлено автор Aristos, источник
@SoftwareSpint дает хорошее представление о сайтах, распределенных на нескольких серверах, однако ASP.NET имеет встроенные механизмы управления кэшем на нескольких серверах. Эта статья может помочь: msdn.microsoft.com/en-us/magazine/dd942840 .aspx
добавлено автор Brian S, источник
Да, конечно, вы можете использовать FileSystemWatcher , который будет отслеживать файл, однако это будет отдельная операция, которую вам нужно будет использовать - вы будете контролировать файл, а затем вручную обновлять Cache на основе изменений в файле. И вам нужно будет рассмотреть, где находится файл - на одном из серверов или в любом из них? Вы можете больше узнать о FileSystemWatcher здесь
добавлено автор Brian S, источник
@Aristos, да, я полагаю, если вы используете один и тот же сайт в двух разных пулах, то да, они не будут использовать один и тот же кэш, но в этом случае они по существу являются двумя разными приложениями, не так ли? У меня нет опыта в этом сценарии - можете ли вы на самом деле сопоставить один сайт/url с двумя пулами приложений?
добавлено автор Brian S, источник
Интересно, спасибо за этот совет @ Аристос. В этом случае вам, вероятно, понадобится использовать StateServer или SQLServer для хранения состояния, даже если это на одном сервере?
добавлено автор Brian S, источник
Как насчет обнаружения нового файла? Я уверен, что это возможно?
добавлено автор user416527, источник
Я не использую пул. Я не думаю, что это необходимо. Я просто не хочу, чтобы ресурсы сервера были перегружены из-за вызовов высокой четкости. Спасибо, ребята ... Я прочитаю ссылки, которые вы мне дали. Вы все очень помогли!
добавлено автор user416527, источник

Если ваш сайт находится только на одном сервере, тогда да.

Если ваш сайт распространен более чем на одном сервере, тогда нет. Кэш-ключ и данные будут доступны только на сервере, на котором он был сохранен.

Например, если сервер находится в Amazon EC2, вы можете использовать ElastiCache, который обеспечит доступ к кешу в распределенной серверной среде.

1
добавлено
Правильно это «на одном пуле» не на одном сервере, потому что если у вас есть веб-сад (больше пулов работает), то каждый пул имеет свой кеш.
добавлено автор Aristos, источник
@Jimmmy, поэтому Cache является
добавлено автор Jodrell, источник
Получил это, да, это имеет смысл, и для меня это данность. Это было бы хорошо. Итак, короткий ответ «да, только на этом сервере»? Думаю, я балансирую нагрузку между шестью серверами (страница получает 5 тыс. Хитов в день).
добавлено автор user416527, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)