mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-29 02:34:02 -04:00
Tell browser to connect to asset domain earlier
When a browser loads a Notify page it does the following: - DNS and TLS handshake for notifications.service.gov.uk - download some HTML - sees that the HTML needs to load some CSS - DNS and TLS handshake for static.notifications.service.gov.uk - downloads the CSS We can speed things up a bit in modern browsers by parallelizing this process a bit. Modern browsers support some HTTP headers[1] that allow them to connect to other origins sooner. After this change the steps are: - DNS and TLS handshake for notifications.service.gov.uk - receive response headers and simultaneously: - download some HTML - DNS and TLS handshake for static.notifications.service.gov.uk - sees that the HTML needs to load some CSS - downloads the CSS 1. https://developer.mozilla.org/en-US/docs/Web/Performance/dns-prefetch
This commit is contained in:
@@ -630,6 +630,11 @@ def useful_headers_after_request(response):
|
|||||||
logo_domain=get_logo_cdn_domain(),
|
logo_domain=get_logo_cdn_domain(),
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
|
response.headers.add('Link', (
|
||||||
|
'<{asset_url}>; rel=dns-prefetch, <{asset_url}>; rel=preconnect'.format(
|
||||||
|
asset_url=f'https://{current_app.config["ASSET_DOMAIN"]}'
|
||||||
|
)
|
||||||
|
))
|
||||||
if 'Cache-Control' in response.headers:
|
if 'Cache-Control' in response.headers:
|
||||||
del response.headers['Cache-Control']
|
del response.headers['Cache-Control']
|
||||||
response.headers.add(
|
response.headers.add(
|
||||||
|
|||||||
@@ -24,6 +24,10 @@ def test_owasp_useful_headers_set(
|
|||||||
" *.notifications.service.gov.uk static-logos.test.com data:;"
|
" *.notifications.service.gov.uk static-logos.test.com data:;"
|
||||||
"frame-src 'self' www.youtube-nocookie.com;"
|
"frame-src 'self' www.youtube-nocookie.com;"
|
||||||
)
|
)
|
||||||
|
assert response.headers['Link'] == (
|
||||||
|
'<https://static.example.com>; rel=dns-prefetch, '
|
||||||
|
'<https://static.example.com>; rel=preconnect'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_headers_non_ascii_characters_are_replaced(
|
def test_headers_non_ascii_characters_are_replaced(
|
||||||
|
|||||||
Reference in New Issue
Block a user