mirror of
https://github.com/pretix/pretix.git
synced 2026-05-09 15:54:03 +00:00
Improve caching of widget.js
This commit is contained in:
@@ -53,6 +53,7 @@ class Command(BaseCommand):
|
|||||||
)
|
)
|
||||||
gs.settings.set('widget_file_{}'.format(lc), 'file://' + newname)
|
gs.settings.set('widget_file_{}'.format(lc), 'file://' + newname)
|
||||||
gs.settings.set('widget_checksum_{}'.format(lc), checksum)
|
gs.settings.set('widget_checksum_{}'.format(lc), checksum)
|
||||||
|
cache.delete('widget_js_data_{}'.format(lc))
|
||||||
if fname:
|
if fname:
|
||||||
if isinstance(fname, File):
|
if isinstance(fname, File):
|
||||||
default_storage.delete(fname.name)
|
default_storage.delete(fname.name)
|
||||||
|
|||||||
@@ -130,11 +130,14 @@ def generate_widget_js(lang):
|
|||||||
|
|
||||||
@gzip_page
|
@gzip_page
|
||||||
@condition(etag_func=widget_js_etag)
|
@condition(etag_func=widget_js_etag)
|
||||||
@cache_page(1 if settings.DEBUG else 60)
|
|
||||||
def widget_js(request, lang, **kwargs):
|
def widget_js(request, lang, **kwargs):
|
||||||
if lang not in [lc for lc, ll in settings.LANGUAGES]:
|
if lang not in [lc for lc, ll in settings.LANGUAGES]:
|
||||||
raise Http404()
|
raise Http404()
|
||||||
|
|
||||||
|
cached_js = cache.get('widget_js_data_{}'.format(lang))
|
||||||
|
if cached_js and not settings.DEBUG:
|
||||||
|
return HttpResponse(cached_js, content_type='text/javascript')
|
||||||
|
|
||||||
gs = GlobalSettingsObject()
|
gs = GlobalSettingsObject()
|
||||||
fname = gs.settings.get('widget_file_{}'.format(lang))
|
fname = gs.settings.get('widget_file_{}'.format(lang))
|
||||||
resp = None
|
resp = None
|
||||||
@@ -142,7 +145,9 @@ def widget_js(request, lang, **kwargs):
|
|||||||
if isinstance(fname, File):
|
if isinstance(fname, File):
|
||||||
fname = fname.name
|
fname = fname.name
|
||||||
try:
|
try:
|
||||||
resp = HttpResponse(default_storage.open(fname).read(), content_type='text/javascript')
|
data = default_storage.open(fname).read()
|
||||||
|
resp = HttpResponse(data, content_type='text/javascript')
|
||||||
|
cache.set('widget_js_data_{}'.format(lang), data, 3600 * 4)
|
||||||
except:
|
except:
|
||||||
logger.exception('Failed to open widget.js')
|
logger.exception('Failed to open widget.js')
|
||||||
|
|
||||||
@@ -156,6 +161,7 @@ def widget_js(request, lang, **kwargs):
|
|||||||
)
|
)
|
||||||
gs.settings.set('widget_file_{}'.format(lang), 'file://' + newname)
|
gs.settings.set('widget_file_{}'.format(lang), 'file://' + newname)
|
||||||
gs.settings.set('widget_checksum_{}'.format(lang), checksum)
|
gs.settings.set('widget_checksum_{}'.format(lang), checksum)
|
||||||
|
cache.set('widget_js_data_{}'.format(lang), data, 3600 * 4)
|
||||||
resp = HttpResponse(data, content_type='text/javascript')
|
resp = HttpResponse(data, content_type='text/javascript')
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user