Python-Django Кэширование изображений
Итак, я прочитал Django-Docs о кэшировании и понял, что могу кэшировать данные для каждого представления, что я и хочу делать. У меня есть такой URL-адрес: www.mysite.com/related_images/advanimage_id}. который вычисляет связанные изображения для выбранного {image_id} и сохраняет их на диск, чтобы они были доступны для шаблона. Дело в том, что я не хочу, чтобы эти изображения оставались там навсегда, но сейчас мой вид сохраняет их на диск без какого-либо кэширования, как я могу убедиться, что путем кэширования представления в течение определенного периода времени, любые файлы, созданные вид будет удален после истечения срока действия кэша?
Или, если у вас есть лучшее решение для моей проблемы, я открыт для идей. Есть ли способ вставить изображения из кэша в шаблоны, не сохраняя их на диске и не указав путь к html явно?
вот упрощенная версия представления:
def related_image(request, pk):
original = get_object_or_404(Image, pk=pk)
images = original.get_previous_views()
for im in images:
path = '/some/dir/'+str(im.id)+'.jpg'
calculated_image = calculate(im,original)
file = open(path)
file.write(calculated_image)
im.file_path = path
return render_to_response('app/related_image.html', {'images': images})
Спасибо:)
0 ответов
Одним из решений было бы посмотреть на метаданные файла для даты его последнего изменения и сравнить ее с установленным сроком действия.
Например:
import os
expiration_seconds = 3600
last_modified_time = os.path.getmtime(file_path) # i.e. 1223995325.0
# that returns a float with the time of last modification since epoch,
# so there's some logic to do to determine time passed since then.
if time_since_last_modified >= expiration_seconds:
# delete the file
os.remove(file_path)
# then do your logic to get the file again