Невозможно кэшировать изображение, возвращаемое из действия контроллера, при использовании Ajax для частичного рендеринга
На контроллере у меня есть способ вернуть изображение из базы данных:
[ResponseCache(CacheProfileName = "ForImages")] //caches this action for a long time
public async Task<IActionResult> GetCategoryPicture(int id)
{
var category = await _categoriesRepository.GetByIdAsync(id);
var picture = category.Picture.Skip(78).ToArray();
return File(picture, "image/jpeg");
}
Я вызываю этот метод из частичного представления, которое я динамически загружаю через вызов AJAX jquery со страницы Razor:
$.ajax({type: "GET", url: `/Admin/Categories/ManageCategoryPartial/${entityId}`.....
В частичном представлении я показываю изображение с некоторой дополнительной строкой запроса URL (метка времени RowVersion из базы данных), чтобы нарушить кэширование изображения при его редактировании:
<img src="/Categories/GetCategoryPicture/@(Model.CategoryId)?v=@Convert.ToBase64String(Model.RowVersion)" class="card-img-top rounded" style="width:6rem;" />
Он должен кэшировать изображение до тех пор, пока RowVersion не изменится в базе данных, но даже с другой RowVersion, добавленной к URL-адресу, кэшированное изображение не будет появляться. Этот подход к перебору кеша работает для меня, когда не задействован AJAX, но я не могу заставить его перестать загружать кешированное изображение вместо того, чтобы приносить новое из базы данных. Есть ли причина, по которой он продолжает показывать кешированное изображение, даже если я предоставляю другой URL-адрес?