
Ich habe eine Django-Website, auf der Benutzer Bilder posten, die die ganze Community sehen kann (ähnlich wie 9gag).
Ich verwende Azure Storage, um die Bilder zu speichern und bereitzustellen. Der Webserver ist ein Nginx-Reverse-Proxy + Gunicorn-Cocktail. Gzip ist auf meiner Website aktiv und läuft. Darüber hinaus habe ich zum Zwischenspeichern der statischen Assets Folgendes in meiner Nginx-Konfigurationsdatei:
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { root /home/mhb11/project/myproject; expires 24h; add_header Vary Accept-Encoding; access_log off; }
Mein Problem besteht darin, dass mir beim Testen meiner Website mit dem Google Page Speed-Plugin die Meldung angezeigt wird, dass keines der aus dem Azure-Speicher bereitgestellten Bilder zwischengespeichert wird:
Was muss ich tun, um die Zwischenspeicherung dafür zu aktivieren? Bitte um Rat. Ich bin ziemlich neu auf diesem Gebiet, daher ist jede Hilfe in dieser Phase eine große Hilfe. Vielen Dank im Voraus und ein schönes Wochenende.
Hier ist die def _save
Methode meiner benutzerdefinierten Speicherklasse, die einen Blob hochlädt:
def _save(self,name,content):
blob_service = BlobService(account_name=accountName, account_key=accountKey)
import mimetypes
small_content = content
content.open()
content_type = None
if hasattr(content.file, 'content_type'):
content_type = content.file.content_type
else:
content_type = mimetypes.guess_type(name)[0]
content_str = content.read()
blob_service.put_blob(
'pictures',
name,
content_str,
x_ms_blob_type='BlockBlob',
x_ms_blob_content_type=content_type
)
Wie stelle ich darin die Cache-Steuerung ein?
Antwort1
Sie müssen die Meta-Tag-Informationen „Cache-Control“ im Azure Storage/Blob festlegen.
Ich verwende AWS und kann dort zum jeweiligen Asset (Ihren Bildern) gehen und diese Informationen angeben.
Außerdem sollten Sie diese Einstellung angeben können, wenn Sie eine Art API zum Hochladen von Bildern aus Ihrer Anwendung verwenden.