assets: use nginx X-Accel-Redirect to serve asset files (#71258)
This commit is contained in:
parent
8d01db8f41
commit
50bd817862
|
@ -390,10 +390,17 @@ def serve_asset(request, key):
|
|||
|
||||
# no thumbnail whithout geometry_string or for a svg file
|
||||
if not geometry_string or asset.asset.name.endswith('svg'):
|
||||
return redirect(asset.asset.url)
|
||||
url = asset.asset.url
|
||||
else:
|
||||
# get or create thumbnail
|
||||
url = get_thumbnail(asset.asset, geometry_string, **thumb_options).url
|
||||
|
||||
# get or create thumbnail and return url
|
||||
return redirect(get_thumbnail(asset.asset, geometry_string, **thumb_options).url)
|
||||
if settings.COMBO_X_ACCEL_ASSETS and url.startswith(settings.MEDIA_URL):
|
||||
response = HttpResponse(content_type='') # let nginx set it
|
||||
response['X-Accel-Redirect'] = url
|
||||
return response
|
||||
|
||||
return redirect(url)
|
||||
|
||||
|
||||
class AssetsExportSize(TemplateView):
|
||||
|
|
|
@ -346,6 +346,9 @@ COMBO_CELL_ASSET_SLOTS = {
|
|||
},
|
||||
}
|
||||
|
||||
# serve assets using nginx X-Accel
|
||||
COMBO_X_ACCEL_ASSETS = False
|
||||
|
||||
COMBO_CELL_TEMPLATES = {}
|
||||
|
||||
COMBO_MAP_LAYER_ASSET_SLOTS = {}
|
||||
|
|
|
@ -12,6 +12,11 @@ exec(open('/usr/lib/hobo/debian_config_common.py').read())
|
|||
# add custom hobo agent module
|
||||
INSTALLED_APPS = ('hobo.agent.combo',) + INSTALLED_APPS
|
||||
|
||||
#
|
||||
# serve assets using nginx X-Accel
|
||||
#
|
||||
COMBO_X_ACCEL_ASSETS = True
|
||||
|
||||
#
|
||||
# local settings
|
||||
#
|
||||
|
|
|
@ -6,6 +6,7 @@ from io import BytesIO
|
|||
import pytest
|
||||
from django.core.files import File
|
||||
from django.core.files.storage import default_storage
|
||||
from django.test import override_settings
|
||||
from django.urls import reverse
|
||||
|
||||
from combo.apps.assets.models import Asset
|
||||
|
@ -157,3 +158,12 @@ def test_import_export_assets(some_assets, tmpdir):
|
|||
def test_assets_export_size_view(app, some_assets):
|
||||
resp = app.get(reverse('combo-manager-assets-export-size'))
|
||||
assert resp.text.split() == ['(9', 'bytes)']
|
||||
|
||||
|
||||
def test_assets_nginx_x_accel(app, some_assets):
|
||||
resp = app.get('/assets/banner')
|
||||
assert resp.location == '/media/assets/test.png'
|
||||
with override_settings(COMBO_X_ACCEL_ASSETS=True):
|
||||
resp = app.get('/assets/banner')
|
||||
assert resp.headers['Content-Type'] == ''
|
||||
assert resp.headers['X-Accel-Redirect'] == '/media/assets/test.png'
|
||||
|
|
Loading…
Reference in New Issue