MVC 3 частичное кеширование
Я знаю, что этот вопрос уже задавался, но я не совсем понимаю, как лучше подходить, поэтому, пожалуйста, прости меня, спрашивая еще раз...
У меня есть приложение MVC3, которое будет экстрасетью, позволяющей пользователям входить в систему с помощью проверки подлинности с помощью форм. Пользователи будут получать доступ к конфиденциальной информации, поэтому, чтобы не дать кому-либо нажать Back после выхода из системы (и я выхожу из Forms Authentication), я отключил все операции кэширования, заставив перенаправить страницу входа.
Все работает хорошо с точки зрения безопасности, но моя проблема в том, что я хотел бы кэшировать незащищенные элементы страницы, такие как изображения, фоны, логотипы и т. Д.
На данный момент каждая страница отображается с мерзким мерцанием, потому что все мои работы загружаются каждый раз.
Конечно, это также оказывает негативное влияние на пропускную способность.
Как я могу контролировать кэширование таким образом, чтобы обложка, CSS, сценарии и т. Д. Кэшировались, в то же время предотвращая страшную кнопку "Назад" после проблемы Forms Authentication SignOut?
Заранее спасибо,
Саймон.
1 ответ
Предполагая, что изображения не генерируются динамически, вы можете сделать это внутренне через MVC или с помощью IIS.
Внутренне вам нужно будет обслуживать все ваши изображения и устанавливать срок действия.
Если вы используете IIS, это становится намного проще, просто отредактируйте заголовок expires в разделе пользовательских заголовков IIS на дату в будущем (дата в прошлом автоматически истекает). Если вы хотите, чтобы изображение не кэшировалось, добавьте к нему строку запроса
<img src="image.png?dummy=8sn7ahh2" />
Тогда изображение тоже не будет кэшировано, поэтому вы в основном хотите кэшировать все изображения, а затем черный список (используя строку запроса) те, которые вы не хотите кэшировать.
Вот хороший пример того, как его включить / выключить для IIS7