ImageResizer: удаление кэшированного изображения (Diskcache и SqlReader)

С помощью ImageResizer изменить размер загружаемых пользователем файлов на лету.

Когда файл удаляется в базе данных (строка удаляется), как оригинальная, так и измененная версия остаются доступными в течение некоторого времени, пока не будет выполнено расписание очистки.

В случае авторского права, порно и т.д., есть способ, чтобы DiskCache знать, что файл был удален и принудительно удалить файл из кэша сразу?

Я думаю, что это может быть решено IVirtualFileWithModifiedDate, но разве не потребуется запрашивать БД по каждому запросу, а не просто обрабатывать его во время удаления?

Немного как:

DAL.DeleteImage(ImageID);

DiskCachePlugin.Invalidate(ImageID);

1 ответ

Когда файл удаляется в базе данных (строка удаляется), как оригинальная, так и измененная версия остаются доступными в течение некоторого времени, пока не будет выполнено расписание очистки.

ImageResizer не разрешает доступ к кэшированным версиям, если он знает, что оригинал недоступен. Тем не менее, некоторые провайдеры (например, Sql и S3) кэшируют метаданные существования для скользящего окна (с минимумом 1 час), что может вызвать поведение, которое вы видите. в V4 вы можете отключить кэширование метаданных, чтобы обеспечить немедленный отзыв доступа.

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