Это в порядке для использования статических переменных для кэширования информации в ASP.net?

Если следующие файлы находятся в одном каталоге, сценарий, вероятно, не будет работать.

1 - 13234.txt
1.txt

Сценарий сначала пытается изменить «1 - 13234.txt» на «1. txt». Лучше сначала проверить наличие файла.

Get-ChildItem -File -Recurse |
where BaseName -match "(.*)-" |
Group-Object { 

Если следующие файлы находятся в одном каталоге, сценарий, вероятно, не будет работать.

[110]

Сценарий сначала пытается изменить «1 - 13234.txt» на «1. txt». Лучше сначала проверить наличие файла.

[111].DirectoryName + "\" + $Matches[1].TrimEnd() +

Если следующие файлы находятся в одном каталоге, сценарий, вероятно, не будет работать.

[110]

Сценарий сначала пытается изменить «1 - 13234.txt» на «1. txt». Лучше сначала проверить наличие файла.

[111].Extension } | foreach { $fi = [IO.FileInfo]::new(

Если следующие файлы находятся в одном каталоге, сценарий, вероятно, не будет работать.

[110]

Сценарий сначала пытается изменить «1 - 13234.txt» на «1. txt». Лучше сначала проверить наличие файла.

[111].Name) $i = 0

Если следующие файлы находятся в одном каталоге, сценарий, вероятно, не будет работать.

[110]

Сценарий сначала пытается изменить «1 - 13234.txt» на «1. txt». Лучше сначала проверить наличие файла.

[111].Group | Rename-Item -NewName { do { $newName = $fi.DirectoryName + "\" + $fi.BaseName + $(if($i){"($i)"}) + $fi.Extension $script:i++ } while (Test-Path $newName) $newName } -PassThru }
23
задан Vincent McNabb 29 September 2008 в 23:46
поделиться

5 ответов

Ловушка: статическое поле ограничено по объему на домен приложения и увеличилось, загрузка заставит сервер генерировать больше доменов приложения в пуле. Это - не обязательно проблема, если Вы только читаете из помех, но Вы получите дублирующиеся данные в памяти, и Вы получите хит каждый раз, когда домен приложения создан или переработан.

Лучше для использования объекта Кэша - это предназначается для вещей как это.

Редактирование: Оказывается, что я был неправ относительно AppDomains (как указано в комментариях) - больше экземпляров , Приложение будет сгенерировано при загрузке, но они будут все работать в том же AppDomain. (Но необходимо все еще использовать объект Кэша!)

16
ответ дан 29 November 2019 в 02:51
поделиться

Пока можно ожидать, что кэш никогда не будет расти до размера, больше, чем сумма доступной памяти, это прекрасно. Кроме того, убедитесь, что только будет один экземпляр этого приложения для каждой базы данных, или кэши в различных экземплярах приложения могли "упасть из синхронизации".

, Где я работаю, у нас есть O/RM собственной разработки, и мы делаем что-то подобное тому, что Вы делаете с определенными таблицами, которые, как ожидают, не вырастут или изменятся очень. Так, что Вы делаете, не беспрецедентно, и на самом деле в нашей системе, попробован и верен.

4
ответ дан 29 November 2019 в 02:51
поделиться

Другая Ловушка, которую необходимо рассмотреть, является потокобезопасностью. Все Ваши запросы приложения работают в том же AppDomain, но могут появиться в различные потоки. Доступ к статической переменной должен составлять то, чтобы он был полученным доступ от нескольких потоков. Вероятно, немного больше служебное, чем Вы ищет. Объект кэша лучше с этой целью.

4
ответ дан 29 November 2019 в 02:51
поделиться

Hmmm... "Классический" метод был бы кэшем приложения, но предоставил Вам, никогда не обновляют статические переменные или понимают проблемы блокировки, если Вы делаете, и Вы понимаете, что они могут исчезнуть в любое время с перезапуском appdomain тогда, я действительно не вижу вреда в использовании помех.

0
ответ дан 29 November 2019 в 02:51
поделиться

Я предлагаю, чтобы Вы изучили способы наличия распределенного кэша для Вашего приложения. Можно смотреть на NCache или indeXus. Сеть

причина, я предложил это, состоит в том, потому что Вы прокрутили свой собственный специальный способ обновить информацию, которую Вы кэшируете. Статические переменные/ссылки прекрасны, но они не обновляют/обновляют (таким образом, необходимо будет обработать старение самостоятельно), и у Вас, кажется, есть распределенная установка.

0
ответ дан 29 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: