Сколько стоит чтение свойств файла? .СЕТЬ - PullRequest
5 голосов
/ 25 августа 2009

Мы экспериментируем с добавлением временных меток к некоторым URL-адресам, чтобы объекты могли кэшироваться, но при этом обновляться. У нас есть код, который сводится к этому:

DateTime ts = File.GetLastWriteTime(absPath);

где absPath - это MappedPath URL-адреса. Таким образом, веб-сервер будет проверять время последней записи этого файла каждый раз, когда мы передаем ссылку на файл. Кинда дает мне волей - не так ли?

Ответы [ 5 ]

7 голосов
/ 25 августа 2009

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

Если (после тестирования) вы решите, что это проблема, вы также можете кэшировать свои вызовы на GetLastWriteTime (например, не вызывайте его чаще, чем раз в 5 секунд для любого данного файла).

Кроме того, я никогда не использовал его, но если кеширование вызывает беспокойство, я надеюсь, что вы решили делегировать его реализацию какому-то специалисту, например Squid , вместо того, чтобы кататься по своему.

2 голосов
/ 25 августа 2009

Я не пробовал этого, но ваш вопрос относится к ситуации, о которой я думал.

Вы не указали, какие данные меняются? база данных, данные XML и т. д.

Кэширование ASP.NET поддерживает обновление кеша на основе различных зависимостей.

Ознакомьтесь с этой статьей в разделах Зависимость от файла, Зависимость от времени, и основанная на ключе зависимость.

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

Вот статья:

http://msdn.microsoft.com/en-us/library/ms972379.aspx

Спасибо

Джо

1 голос
/ 25 августа 2009

По сути, есть три ответа на ваш вопрос «как дорого?».

  1. Слишком дорого - вы проверили это, и что-то должно измениться, чтобы система могла работать.
  2. Приемлемо - вы проверили его, и оно не очень хорошее, но оно достаточно быстрое для использования
  3. Довольно дешево - вы проверили его, и не оказывает заметного влияния на производительность.

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

0 голосов
/ 25 августа 2009

Или, если вы беспокоитесь об этом, почему бы не кэшировать его на минуту?

0 голосов
/ 25 августа 2009

Это приведет к дополнительным операциям ввода-вывода на малых дисках, когда будут сгенерированы ссылки. Если за короткое время вы создадите много URL-адресов, это может стать узким местом. Никто не может сказать наверняка, повлияет ли это на ваш сценарий - вам действительно нужно измерить и посмотреть, будет ли это проблемой.

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