c # перезаписать файл, файл ошибок используется IIS 7.5 - PullRequest
1 голос
/ 04 января 2012

У меня есть программа, которая перезаписывает определенный набор файлов, необходимых для моего сайта, однако трафик на моем сайте увеличился настолько, что я теперь получаю файл ошибки в использовании. Что приводит к невозможности обновления файла ..

Эта программа запускается каждые 5 минут для обновления указанных файлов.

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

Поэтому мой вопрос таков; Могу ли я сказать IIS7.5 кэшировать файл после (скажем, от 5 секунд до 1 минуты) его обновления? Это должно гарантировать, что при следующем запуске программы для обновления файла у нее не возникнет никаких проблем.

1 Ответ

1 голос
/ 04 января 2012

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

Но если вы не можете использовать базу данных, я бы выбрал другой подход, сохраняйте содержимое файла в System.Web.Caching.Cache со временем, когда оно было изменено в последний раз, и затем проверяйте, изменился ли файл, если не используется кэшированная версия, и если было изменено хранение нового содержимого и времени в той же переменной кэша.

Конечно, вам нужно будет проверить, можете ли вы прочитать файл, и только затем обновить содержимое кэша, а если вы не можете прочитать файл, вы можете просто получить последнюю версию из кэша.

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

Лучший способ проверить, что вы можете прочитать из файла, - перехватить исключение, потому что блокировка может произойти после вашей проверки, см. Этот пост: Как проверить блокировку файла?

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