ImageResizer: удаление кэшированного изображения (Diskcache и SqlReader)
С помощью ImageResizer
изменить размер загружаемых пользователем файлов на лету.
Когда файл удаляется в базе данных (строка удаляется), как оригинальная, так и измененная версия остаются доступными в течение некоторого времени, пока не будет выполнено расписание очистки.
В случае авторского права, порно и т.д., есть способ, чтобы DiskCache
знать, что файл был удален и принудительно удалить файл из кэша сразу?
Я думаю, что это может быть решено IVirtualFileWithModifiedDate
, но разве не потребуется запрашивать БД по каждому запросу, а не просто обрабатывать его во время удаления?
Немного как:
DAL.DeleteImage(ImageID);
DiskCachePlugin.Invalidate(ImageID);
1 ответ
Когда файл удаляется в базе данных (строка удаляется), как оригинальная, так и измененная версия остаются доступными в течение некоторого времени, пока не будет выполнено расписание очистки.
ImageResizer не разрешает доступ к кэшированным версиям, если он знает, что оригинал недоступен. Тем не менее, некоторые провайдеры (например, Sql и S3) кэшируют метаданные существования для скользящего окна (с минимумом 1 час), что может вызвать поведение, которое вы видите. в V4 вы можете отключить кэширование метаданных, чтобы обеспечить немедленный отзыв доступа.