RFC: HTTP/2 Support
See original GitHub issueDescription of Problem
IIS 10 (Windows 10 & Windows Server 2016+) supports HTTP/2 out-of-the-box for HTTPS without any changes (e.g. dnnsoftware.com is being served over HTTP/2). Most of its benefits are available without any changes, however there are a few changes to consider.
Server Push
HTTP/2 supports the idea of the web server telling the client early about requests that it promises will be made later. In ASP.NET, this is implemented via the Response.PushPromise
method, available starting in .NET 4.6. The API allows the server to specify a path, and if the request is served over HTTP/2 it includes that path in the response, to tell the client to request it (the call is just silently ignored when the site is served over HTTP/1.1 or otherwise not supported).
Proposal
DNN is currently compiled against .NET 4.5, and so cannot take advantage of this API. In DNN 10, the Client Resource Manager should be upgraded to send a server push for each requested URL. More instances of known resources to request should be studied, and this API applied.
Remove/Reduce HTTP/1.1 optimizations
Some optimizations for HTTP/1.1 are no longer recommended when serving a site over HTTP/2. These include domain sharding, inlining resources, and possibly combining requests.
Proposal
A study should be done to determine how client resource combination affects the performance of sites, and whether it should be disabled on HTTP/2. Likewise, instances of inlining content should be replaced with a call to the PushPromise
API mentioned above.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:6
- Comments:13 (8 by maintainers)
Top GitHub Comments
AFAIK this is still an (important) issue and should remain on the to-do list.
This issue has been closed automatically due to inactivity (as mentioned 14 days ago). Feel free to re-open the issue if you believe it is still relevant.