DiskCache項目最初是爲類似問題(緩存圖像)而創建的。它包含一些功能,可以幫助您高效地緩存和提供圖像。 DiskCache是Apache2許可的磁盤和文件支持緩存庫,採用純Python編寫,並與Django兼容。
diskcache.DjangoCache提供了一個兼容Django的緩存界面,並帶有一些額外的功能。特別是,get
和set
方法允許讀取和寫入文件。舉個例子:
from django.core.cache import cache
with open('filename.jpg', 'rb') as reader:
cache.set('filename.jpg', reader, read=True)
之後你可以到文件的引用:
reader = cache.get('filename.jpg', read=True)
如果你只是想在磁盤上的文件名(在緩存):
try:
with cache.get('filename.jpg', read=True) as reader:
filename = reader.name
except AttributeError:
filename = None
上面的代碼請求緩存中的文件。如果沒有這個值,它將返回None
。 None
將導致with
聲明引發異常,因爲它缺少__exit__
方法。在這種情況下,捕獲異常並將filename
設置爲None
。
使用文件名,您可以使用類似X-Accel-Redirect的內容告訴Nginx直接從磁盤提供文件。
好的和關於緩存部分的信息性指南,但我有一個查詢獲取下10個圖像。我在我的views.py文件'documents = Document.objects.filter(owner = request.user)[page_no:page_no + 5]''中有這個聲明。 page_no最初從「0」開始。我在我的模板中有一個「下一個」按鈕,它將獲取我下一個10張照片。所以,我正在考慮使用jQuery + AJAX。那麼,我將如何通過jQuery發送數據,說明應該顯示哪一組圖片,即11-20或21-30或31-40等等。 – PythonEnthusiast
你也可以使用Django自己的'Paginator' –