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"/>

вместе с пачками. Это сработало для меня

Другие вопросы по тегам