1. What is HTTP or HTTPS?
Hypertext Transfer Protocol (HTTP) is a protocol that is,
the foundation of data communication for the World Wide Web.
HTTP is based on the Client and Server model. Where client
send the request to server and then server send the response to the client
based on the request. Here HTTP comes in picture and act as bridge between
client and server to communicate with each other.
2. HTTP/2
In 2015 web world get an enhanced version of HTTP protocol
HTTP/2. HTTP/2 provides us with many new mechanics that will mitigate HTTP/1.1
issues. HTTP/2 will make our applications faster, simpler, and more robust,
which improve the performance of your website and that helps your organization
to make more customer and more customers means more business. HTTP/2 transport
the content in low-latency over World Wide Web.
3. Advantage of HTTP/2
3.1. Request and response multiplexing
HTTP/2 can send multiple requests and response for data in
parallel over a single TCP connection. This is the most advanced feature of the
HTTP/2 protocol because it allows you to download web files asynchronously from
one server. HTTP/2 doesn’t make multiple TCP connections to transfer the
content as HTTP/1.x does.
3.2. Binary protocol
The latest HTTP version has evolved significantly in terms
of capabilities and attributes such as transforming from a text protocol to a
binary protocol. HTTP1.x used to process text commands to complete
request-response cycles. HTTP/2 will use binary commands (in 1s and 0s) to
execute the same tasks.
Browsers using HTTP/2 implementation will convert the same
text commands into binary before transmitting it over the network.
3.3. Header Compression
Each HTTP transfer carries a set of headers that describe
the transferred resource and its properties. In HTTP/1.x, this metadata is
always sent as plain text and adds anywhere from 500–800 bytes of overhead per
transfer, and sometimes kilobytes more if HTTP cookies are being used.
To reduce this overhead and improve performance, HTTP/2
compresses request and response header metadata using the HPACK compression
format that uses two simple but powerful techniques:
- It allows the transmitted header fields to be encoded via a static Huffman code, which reduces their individual transfer size.
- It requires that both the client and server maintain and update an indexed list of previously seen header fields (i.e., establishes a shared compression context), which is then used as a reference to efficiently encode previously transmitted values.
3.4. Prioritization
is resource/content
With HTTP/2 browsers prioritize requests based on
type/context, and immediately dispatch the request as soon as the resource is
discovered. The client can indicate the priority of the resource and
communicated to the server (that’s get calculated by weights + dependencies of
that resource), so server can fulfill those request before other requests.
4. How to enable SSL in AEM?
Please refer the Adobe document >> Enable SSL in AEM5
5. How to enable HTTP/2 on web server?
HTTP/2 is supported by all modern browsers, you have to just
enable the HTTP/2 on your web server. To do so below are the steps and
prerequisite.
5.1. Steps to enable HTTP/2 on Apache
To get HTTP/2 working on Apache you need to enable and load
SSL and HTTP/2 modules6. To do so, you may run the following in your terminal:
sudo a2enmod ssl
then run this>>
sudo a2enmod http2
To activate the above modules you have to restart your
server, to do so run the following:
sudo systemctl restart apache2
Now open your global Apache configuration or inside of a
particular virtual host and apend the below line in your configuration.
Protocols h2 http/1.1
5.2. Prerequisites
- Enable SSL or HTTPS on your server. Enable SSL in AEM5
- TLS protocol version >= 1.2 with modern cipher suites is required.
- Ensure that you are running Apache 2.4.17 or above. Because HTTP/2 doesn’t support in lower version of Apache.
6. References
- https://hpbn.co/http2/
- https://developers.google.com/web/fundamentals/performance/http2/
- https://httpd.apache.org/docs/2.4/howto/http2.html.en
- https://helpx.adobe.com/experience-manager/6-3/assets/using/http2.html
- https://docs.adobe.com/content/help/en/experience-manager-dispatcher/using/configuring/dispatcher-ssl.html
- https://www.howtoforge.com/how-to-enable-http-2-in-apache/
- HTTP/2 not enabled in Chrome