Я знаю, что большинство людей рекомендуют использовать HttpRuntime.Cache, потому что у него больше гибкости ... и т. Д. Но что, если вы хотите, чтобы объект сохранялся в кеше в течение всего срока действия приложения ? Есть ли большой недостаток в использовании объекта Application [] для кэширования?HttpRuntime.Cache [] vs Application []
ответ
Пока вы не злоупотребляете статусом приложения, я не вижу проблемы с его использованием для предметов, которые вы не хотите истекать. Альтернативно, я бы, вероятно, использовал статическую переменную рядом с кодом, который ее использует. Таким образом, вы избегаете проходить через HttpApplicationState
, а затем вынуждены иметь ссылку на System.Web, если я хочу получить доступ к моим данным.
Но не забудьте подумать, как использовать объекты, которые вы храните в HttpApplicationState
. Если это DataSet
, который вы добавляете для каждого запроса, то в какой-то момент вы в конечном итоге съедаете слишком много памяти на веб-сервере. То же самое может произойти, если вы продолжаете добавлять элементы к HttpApplicationState
при обработке запросов, в какой-то момент вы заставите приложение перезагрузиться.
Это, вероятно, преимущество использования кеша в вашей ситуации. Потребление памяти большего объема не так росло, потому что вы позволяете ASP.NET выпускать элементы в кеше, когда память становится недостаточной.
Используйте кеш, если хотите, чтобы элементы автоматически истекали или возвращались, когда память провалена. В противном случае используйте статические переменные, если сможете, потому что они принесут лучшую производительность, а затем выкапывают через коллекцию ApplicationState. Я не совсем уверен, что будет, когда использовать ApplicationState, но наверняка будут некоторые.
Приложение устарело кэш. Если вам нужно что-то с областью приложения, то вы должны либо создать его как статический член класса, либо использовать Cache. Если вы хотите перейти по пути кэш-памяти, но не хотите, чтобы он истекал, вам следует использовать параметр CacheItemPriority.NotRemovable, когда вы вставляете значение в кеш. Обратите внимание, что этот приоритет можно использовать и использовать зависимости кэша, например, если ваши данные зависели от чего-то в файловой системе. Все действия CacheItemPriority не позволяют HttpRuntime.Cache разумно очищать элемент, когда он чувствует давление в памяти, и использует свой алгоритм с наименьшим временем использования, чтобы очистить элементы, которые не видят большого использования.
- 1. C# HttpRuntime.Cache
- 2. Application Craft VS Marmalade
- 3. Индекс Emberjs vs Application
- 4. Standalone vs. Desktop application
- 5. Xamarin Activity vs Application
- 6. Tiggr vs Application Craft
- 7. Java Applet vs Application
- 8. library- vs. application-version
- 9. Android Native Application vs Cross platform application
- 10. QML application vs QML/C++ application
- 11. ASP.NET MVC Web Application Vs Web Application
- 12. log4net vs MS Application Application Block
- 13. Количество байтов, используемых HttpRuntime.Cache?
- 14. Где хранит данные HttpRuntime.Cache?
- 15. HttpRuntime.Cache лучшие практики
- 16. Обновить HttpRuntime.Cache на Azure
- 17. Сфера применения HttpRuntime.Cache
- 18. HttpRuntime.Cache не заканчивается?
- 19. HttpRuntime.Cache не работает
- 20. является cacheitemremovedcallback HttpRuntime.Cache потокобезопасным?
- 21. Насколько хорошо масштабируется HttpRuntime.Cache?
- 22. Проблемы с использованием HttpRuntime.Cache
- 23. AlertDialog - Activity vs Application Context
- 24. Rational Application Developer vs Eclipse
- 25. C# Portable Application vs .NET
- 26. Rails Engine vs. Rack Application
- 27. Application Paid vs Free Version
- 28. Linux daemon vs foreground application
- 29. UIApplicationWillTerminate: NSNotificationCenter vs Application Delegate
- 30. text/javascript vs application/javascript
Почему вы говорите, что приложение устарело? Я никогда не видел этого нигде, и его не указано в документации. – 2009-07-13 20:31:35