Visual Studio Development Server не обновляет CSS и JavaScript?
Я недавно вернулся к проекту веб-сайта, который был в отставке. С момента начала работы я заметил, что изменения css и javascript не распознаются приложением при его запуске в Visual Studio Development Server. Ранее это работало нормально. Я мог бы изменить таблицы стилей и JavaScript, запустить приложение и протестировать. Теперь единственный способ проверить приложение - это опубликовать его на моем локальном сервере IIS (хотя я считаю, что перезагрузка компьютера также решает проблему).
Использование Visual Studio 2008 (9.0.30729.1)
Что я изменил, так как я уверен, что он работал правильно, так это операционная система от Vista x64 Home Premium Edition до Win 7 x64 Ultimate, и я переместил исходный код проекта с c: на d:. Хотя я вернулся на C: с такими же отрицательными результатами. Я также перенес некоторые функциональные возможности в отдельные службы WCF, размещенные в консольных приложениях (два хоста служб), которые включаются в режим отладки, когда веб-сайт запускается в режиме отладки.
Остановка сервера dev ничего не делает. Извлечение (используя VSS 2005) ВСЕХ файлов, чтобы гарантировать, что ничего не читается, ничего не делает. Единственное, что работает, - это публикация в IIS или перезагрузка компьютера. Оба нежелательны. Я даже буду удовлетворен, если есть процесс, который мне нужно завершать каждый раз, когда я прекращаю отладку, чтобы не использовать предыдущие копии вещей.
Какие-либо решения?
3 ответа
Сервер может отправлять заголовки в браузер, которые заставляют его продолжать использовать кэшированные копии. Простой способ проверить это - очистить кеш браузера.
Если это исправит это, вам нужно изучить HTTP-заголовки, которые вы получаете с сервера. Инструменты разработчика (также известные как инструменты F12) в выбранном вами браузере будут отображать заголовки, возвращаемые сервером. Затем решите, хотите ли вы продолжать использовать эти настройки кэширования ( хорошие для скорости) или изменить их ( хорошие для разработки).
А как вы настраиваете эти заголовки, спросите вы? Это зависит от сервера. Вот ссылка на инструкцию для распространенных серверов:
Быстрый способ - добавить случайные параметры после атрибута src скрипта или файла css. например
<script type="javascript" src="@Url.Content("~/scripts/myScripts.js?" + DateTime.Now.ToString("ddMMHHmmss")"></script>
поэтому браузер всегда будет считать, что это новый файл, и не будет кешироваться.
Обязательно удалите это при развертывании на живом сервере.
Если вы всегда хотите получать последнюю версию файлов js и CSS, вы можете изменить промежуточное ПО StaticFile, например
app.UseStaticFiles(new StaticFileOptions()
{
OnPrepareResponse = context =>
{
context.Context.Response.Headers.Add("Cache-Control", "no-cache, no-store");
context.Context.Response.Headers.Add("Expires", "-1");
}
});
или вы могли бы добавить
asp-append-version="true"
к вашим ссылкам на файлы, например:
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true"/>
Попробуй использовать
<link href"~/Content/Style.css" rel="stylesheet"/>
вместе с пачками. Это сработало для меня