RAHUL(10217975) Ответов: 2

Проблема с кэшем в internet explorer


Всем Привет,

Я сталкиваюсь с одной проблемой, когда развертываю свои изменения кода (Asp.net,c#) в UAT-сервере. Каждый файл. aspx принимает последнюю версию файла javascript, и он работает правильно, но когда я развертываю свой код на рабочем сервере, то .aspx иногда принимает кэшированную версию файла javascript, которая не вызывает никаких новых изменений для конечного пользователя.


Некоторые конечные пользователи не выключают свой рабочий стол, поэтому они сталкиваются с этой проблемой.

Я хочу, чтобы всякий раз, когда пользователь посещает любую страницу (первый раз /второй раз), страница должна принимать последнюю версию javascript.

Я столкнулся с этой проблемой в Internet Explorer 11.0.
В Internet Explorer, в общей постановке Temperort файлы Интернета, т. е.
Проверьте наличие более новой версии версии кэша, каждый раз, когда я посещаю веб-страницу, что не представляется возможным, потому что веб-сайт используется многими пользователями.


Если у вас есть какое-либо другое решение, Пожалуйста, дайте мне знать.
Спасибо

Что я уже пробовал:

1.
&ЛТ;скрипт СРЦ="JavaScript для./Myjavascript.в JS?сессия="+код типа="текст/JavaScript"&ГТ;&ЛТ;/скрипт>

в файле aspx

2.
Ответ.Кэш.SetCacheability (HttpCacheability.NoCache);
Ответ.Кэш.SetExpires(DateTime. Now);
Ответ.Кэш.SetNoServerCaching();
Ответ.Кэш.SetNoStore();


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

2 Ответов

Рейтинг:
1

F-ES Sitecore

<script src="Javascript./Myjavascript.js?session="+SessionID type="text/javascript"></script>


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

Вместо того чтобы использовать идентификатор сеанса просто используйте простой номер версии который вы увеличиваете каждый раз при выпуске

<script src="Javascript./Myjavascript.js?ver=1" type="text/javascript"></script>


В следующий раз, когда вы обновите JS-файл, измените его на ver=2 и так далее.


RAHUL(10217975)

Итак, согласно вашему решению, когда я развертываю файл aspx, я должен увеличить ver=1 на 1 ?
Я думаю, что это будет неосуществимо с точки зрения разработчика, чтобы помнить каждый раз, когда я развертываюсь.

David_Wimbley

Не задерживайтесь и не отвергайте его, потому что вы думаете, что работа ручная и ее невозможно запомнить.

Существует множество различных автоматизированных способов сделать то, что было предложено...иногда решения не подходят всем, вам нужно немного поработать, чтобы сделать это именно то, что вы хотите.

Вы можете добавить GUID, дату, что угодно, чтобы сделать это. Если бы у вас был сервер сборки, вы могли бы реализовать автоматизированную задачу на своем сервере сборки.

RAHUL(10217975)

извините за поздний ответ,
Но проблема с кэшем не возникает на сервере UAT и QA, есть ли какие-либо настройки сервера, которые мне не хватает ??

F-ES Sitecore

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

Рейтинг:
0

ZurdoDev

Я не думаю, что есть идеальный ответ. У нас есть несколько мест, где мы привязываемся к JavaScript

new Date().getTime()
до конца или наши URL-адреса, чтобы IE думал, что это страница, которая раньше не просматривалась, но у нас все еще есть проблемы с кэшем. Обычно это срабатывает, но не всегда.

Лучший вариант-напомнить своим пользователям, чтобы они очистили свой кэш.