Я хотел бы улучшить производительность функции, которая возвращает измененные изображения. Запрашиваемый размер изображений не должен сильно отличаться (зависит от устройства), поэтому имеет смысл как-то кэшировать результаты.Clojure - memoize на диске
Я мог бы, конечно, сохранить его на диске, и проверить, если новое изображение существует, и убедитесь, что если исходное изображение будет удалено, змененные версии тоже ...
Или я мог бы использовать memoized функция. Но так как результат потенциально довольно большой (изображение составляет около 5 - 10 МБ, я думаю), бессмысленно хранить их в памяти (несколько десятков ГБ изображений и их модифицированные версии будут заполнять память довольно быстро).
Итак, есть ли способ иметь memoized функцию, которая действует как обычный Clojure defmemo
, но поддерживается ли папкой на локальном диске вместо памяти? Затем я мог бы использовать стратегию ttl
, чтобы убедиться, что изображения не слишком долго не синхронизируются.
Нечто похожее на crache, но при поддержке файловой системы?
Вы можете сохранить измененные изображения в Redis или Memcached с некоторым разумным сроком действия для автоматической очистки неиспользуемых записей. –
Просто посмотрел на вашу ссылку «crache», и она отлично подходит для вашей задачи. –
@LeonidBeschastny Well crache поддерживается Redis, который является хранилищем данных в памяти. К сожалению, у меня не так много RAM, поэтому я стараюсь избегать этого и вместо этого имею файловую систему. – nha