И все же, в чем волшебство папки содержимого ASP.NET MVC? - PullRequest
9 голосов
/ 17 ноября 2011

Я только что переместил свои файлы ресурсов (javascript, css, images) из папки Content в пользовательскую папку Assets.И я заметил странное поведение - эти файлы больше не кэшируются браузером, и MvcMiniProfiler показывает отдельный запрос для каждого ресурса, расположенного в папке Assets:

Before moving to Assets folder and after

Я знаю, что папка Content не требуется соглашением ASP.NET MVC, но почему это происходит?* Content как-то особенно обрабатывается кем-либо (например, ASP.NET, IISExpress и т. Д.)?А как принудительно кэшировать другие папки, содержащие статические ресурсы?

EDIT: О, похоже, это не странное поведение ASP.NET MVC, а просто стандартное поведение MvcMiniProfiler.В настоящее время я проверяю, что ...

РЕДАКТИРОВАТЬ: Да, нет проблем с ASP.NET MVC, это просто конфигурация по умолчанию MvcMiniProfiler, чтобы игнорироватьтолько эти пути: "/mini-profiler-", "/content/", "/scripts/", "/favicon.ico".И эти значения по умолчанию могут быть легко расширены:

MiniProfiler.Settings.IgnoredPaths = MiniProfiler.Settings.IgnoredPaths
    .Concat(new [] { "/assets/" })
    .ToArray();

Иногда полезно прочитать документацию перед использованием чего-либо;)

Ответы [ 2 ]

5 голосов
/ 17 ноября 2011

Как вы указываете в своем обновлении, это, кажется, особенность MvcMiniProfiler:

/// <summary>
/// When <see cref="MiniProfiler.Start"/> is called, if the current request url contains any items in this property,
/// no profiler will be instantiated and no results will be displayed.
/// Default value is { "/mini-profiler-", "/content/", "/scripts/", "/favicon.ico" }.
/// </summary>
[DefaultValue(new string[] { "/mini-profiler-", "/content/", "/scripts/", "/favicon.ico" })]
public static string[] IgnoredPaths { get; set; }

Источник .

Предположительно, изображения никогда не быликэшировался, когда вы обслуживали их через Cassini, потому что Cassini ужасен (например, передача файлов png в виде application / octet-stream), но MvcMiniProfiler вручную скрыл эту проблему от вашего просмотра.

5 голосов
/ 17 ноября 2011

Это странное поведение. Однако поместите следующий код в файл web.config, который находится в корне вашего приложения:

  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
    </staticContent>
  </system.webServer>

Этот код добавляет необходимые заголовки ответа для работы кэширования браузера. Вы можете настроить время, конечно. За дополнительной информацией обращайтесь: http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache

...