Необходимо вручную кэшировать статические файлы в C # / ASP.NET? - PullRequest
4 голосов
/ 29 ноября 2010

У меня есть класс, который создает экземпляр StreamReader для XML-файла в локальной файловой системе. Возможно, что один и тот же файл запрашивается несколько раз в секунду.

Мне было интересно, нужно ли мне вручную добавлять этот файл в System.Web.Cache и читать его оттуда, или сама Windows достаточно умна, чтобы кэшировать сам элемент, чтобы он «знал», когда ASP.NET запрашивает этот файл второй / третий и т. д., когда ему не нужно выполнять операцию поиска / чтения диска и извлекать его из собственного кэша?

Эта статья: http://dotnetperls.com/file-read-benchmarks, кажется, подтверждает это, но в этом: article: http://msdn.microsoft.com/en-us/library/18c1wd61%28v=VS.100%29.aspx (хотя и не обсуждается с точки зрения производительности, а может быть и по другим причинам полностью) перечислены способы добавления физический файл в кеш.

1 Ответ

2 голосов
/ 29 ноября 2010

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

Затем вы можете вручную добавить его в HttpRuntime.Cache и даже установить зависимость файла от исходного файла для истечения срока действия кэшированного вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...