Edge Side Includes https://www.litespeedtech.com/images/logos/litespeed/litespeed-logo.png 2019-12-13 16:46:27 LiteSpeed provides best-in-class, customizable acceleration via our W3C-conformant Edge Side Includes Engine and Dynamic Element Management. ESI is a markup language that allows web developers to designate parts of a web page as fragments to be processed separately from the rest of the page.

Edge Side Includes

LiteSpeed provides best-in-class, customizable acceleration via our W3C-conformant Edge Side Includes Engine and Dynamic Element Management

What are Edge Side Includes (ESI)?

ESI is a markup language that allows web developers to designate parts of a web page as fragments to be processed separately from the rest of the page.

ESI is processed by what is known as an ESI Engine. ESI Engines can function in any step of web page delivery - ADC, CDN, Proxy, Web Server, Web Application, etc. The engine checks the response for ESI tags. If found, the engine removes the ESI tag and sends a second request to the backend (however far it needs to go) without going to the browser first. The second request's response is used in place of the ESI tag, filling the hole that the tag left behind. This continues until no ESI tags remain, and then the complete page is forwarded to the browser.

There are many possible applications for ESI, but its main purpose is to allow pages to be delivered quickly and more accurately using tools such as caching. It is considered an edge computing application, meaning it minimizes the distance that data must travel, the volume of data and the traffic. With ESI, a web page can be broken into different fragments, processed separately, and then re-assembled before being delivered to the browser.


Why ESI Instead of JavaScript (CSI) or SSI?

Most modern web applications generate dynamic content based on user requests and may contain per-user data such as shopping cart items for an e-commerce site. Caching accurately for dynamic content is tricky. In general there are three solutions: CSI, SSI, and ESI.

Client Side Includes (CSI) Using Javascript and Ajax

When JavaScript is used, it takes two or more trips from the browser to the web server to fully load a page that includes dynamic fragments. Most of the time, these AJAX requests for dynamic fragments are not cacheable. If the main page is cached, the browser will load the initial page quickly, issue Ajax calls afterwards, and then refresh the page. You may have seen this when visiting a new product page in an ecommerce site. Initially the cart is empty. Then, after a second, it shows the cart has two items. This makes viewers feel the page has loaded quickly, and then the content is sneakily refreshed afterwards. Indeed, this improves the user experience, but at the cost of extra round trips to the server. For the same number of online users, you get increased incoming requests and higher server resource usage.

Server Side Includes (SSI)

SSI is a simple interpreted server-side scripting language that is supported by major web servers including LiteSpeed, Nginx, Apache, IIS, Tomcat etc. It allows the contents of a file or the output of a CGI script to be transcluded in another. Since SSI runs on a web server, it is hard to use on a CDN or proxy. It is not flexible and is mostly used on custom built sites.

Edge Side Includes (ESI)

ESI is more flexible and includes all of the functions that SSI has. It can run on an edge server, such as CDN edge nodes. With ESI, when a page is requested, the full page will be assembled before making any trips back to the browser. Avoiding extra trips back and forth shaves excess loading time.

With the ability to create fragments (aka "punch holes") for private content, ESI enables most of a site's pages to be considered publicly-cacheable. A page no longer has to be deemed non-cacheable only because a section of it is non-cacheable. Allowing that section to be cached privately, while the rest of the page remains in public cache, optimizes space usage and speed.


The LiteSpeed Difference

Unlike competing products, LiteSpeed implements the ESI 1.0 protocol in full. All elements, such as esi:include, esi:inline, esi:choose, esi:try and more, are supported. LiteSpeed's esi:include requires the URL to be from the same domain to avoid the risk of XSS attacks.

When ESI is combined with LSCache plugins and the LiteSpeed Cache server module, it takes on a whole new level of usefulness. The plugin resides within the CMS and knows exactly what content can be cached and when to purge it. The cache engine is at the server level (either LiteSpeed Web Server Enterprise or Web ADC). Pages can be given a longer time to live (TTL) - days, weeks - as the plugins will indicate when the page content is outdated. This is possible through LiteSpeed's intelligent tag-based cache system.

Using ESI Hole Punching, Private/Public Cache separation, and Flexible Cache Control via rewrite rules and response headers, LiteSpeed can assemble and serve dynamic web pages entirely from cache without backend server interaction.

Compared to Varnish as a separate proxy layer, the LiteSpeed solution makes the whole stack simpler and easier to maintain by combining HTTPS/HTTP2 termination, caching, and the web server in a single piece. It also makes the purge process faster because there is no separate socket connection. For example, an "add to cart" request, and the cart ESI block purge request can be handled through a single response header with no extra cost.

Other application-based internal cache systems may also allow hole punching, but they must invoke backend PHP scripts. They just can't beat the efficiency of LiteSpeed's server-side cache.


LiteSpeed ESI and eCommerce

eCommerce sites are usually heavy applications which need faster load times to convert more sales. Edge Side Includes give users the opportunity to cache these sites. Without ESI, this would otherwise be tricky, because there is often a mix of public and private content on a single page.

Public content is information that can be served to all visitors. Private content is specific to individual users. For example, look at a product page on an eCommerce site: most of the page is public content because it is the same for everyone, but the header may contain "items in cart" information, or a "hello, Jane" greeting, both of which are considered private content.

ESI provides the ability to cache each page fragment appropriately in public or private cache. In an eCommerce scenario, this allows the dynamically generated shop page to be fully served from cache. Privately cached items (such as personalized greetings and cart contents) may be assembled together with the page's publicly cached contents and delivered as a single, fully-cached page. Full and accurate caching translates into superior performance and improved customer experience.

LiteSpeed Cache plugins for WordPress/WooCommerce, Joomla, OpenCart, PrestaShop, Magento, and Drupal have ESI support built in. With ESI, LiteSpeed is able to provide the best caching solution in the industry.

Try ESI today in one (or both) of our free trials!

Privacy Policy

Privacy Policy

LiteSpeed Technologies, Inc. (aka “LiteSpeed”) is committed to protecting your privacy. This policy ("Privacy Policy" or "Policy") explains our practices for our site, www.litespeedtech.com ("Site"). You can visit most pages of the Site without giving us any information about yourself, but sometimes we do need information to provide services that you request. By using this Site or any products or services provided through the Site, you expressly consent to the use and disclosure of information as described in this Privacy Policy.

LiteSpeed reserves the right to revise, modify, add, or remove provisions to this Privacy Policy at any time. If we make changes to this Privacy Policy, we will update the Effective Date to note the date of such changes. LiteSpeed encourages you to review this Privacy Policy periodically for any changes. IF YOU DO NOT AGREE WITH ANY OF THE TERMS BELOW, YOU SHOULD NOT USE THIS SITE OR THE PRODUCTS OR SERVICES OFFERED BY LITESPEED TECHNOLOGIES AT THIS SITE.

Collection of Information

Personal Information.

LiteSpeed will ask you for certain “Personal Information” when you complete registration or product information request forms on the Site, including but not limited to your name, address, telephone number, email address, and credit card information. You can always choose not to provide us with the requested information, however, you may not be able to complete the transaction or use our products or services if you do not provide the information requested.

Non-Personal Information.

LiteSpeed may collect non-personally identifiable information from you such as the type of browser you use, your operating system, the screen resolution of your browser, your ISP, your IP address, which pages you view on the Site and the time and duration of your visits to the Site (collectively, “Non-Personal Information”). LiteSpeed may associate Non-Personal Information with Personal Information if you register with the Site.

User Communications.

If you communicate with us, we may collect information relating to that communication whether it takes the form of email, fax, letter, forum posting, blog comments, testimonials or any other form of communication between you and LiteSpeed or Submitted by you to the Site (collectively, “User Communications”).

Server Information.

If you use one of our software products such as LiteSpeed Web Server or LiteSpeed Web ADC, we may collect certain information concerning such software and concerning the server upon which the software operates. This information includes: (a) the licensed or unlicensed status of the software; (b) the source from which the license for the software was obtained (i.e., LiteSpeed or a LiteSpeed affiliate); or (c) information about the server upon which the software is installed including (i) the public IP address, (ii) the operating system and (iii) the use of any virtualization technologies on such server ((a) through (c) collectively, “Server Information”). Additionally, “Server Information” may also include information collected from you by LiteSpeed in the event that you request technical support services including without limitation, IP addresses, usernames, and passwords necessary to login to SSH, the root directory of the server upon which you installed the LiteSpeed software and any affected accounts including email accounts, control panel accounts, MySQL accounts, CMS accounts and other accounts.

Use and Storage of Collected Information

LiteSpeed may use Personal Information to create and authenticate your account, to respond to your requests, to provide you with customer and technical support, or to provide you with information regarding our products, services, partners, and company. You may update your Personal Information with us at any time, but we may maintain records of any Personal Information you disclose to us indefinitely, unless otherwise requested as outlined below.

We may use User Communications in the same ways we use Personal Information. If you communicate with us for a particular purpose, we may use your User Communications for that purpose. For example, if you contact us for technical support, we may use your communications to provide technical support to you. We may maintain records of User Communications you transmit to us indefinitely, unless otherwise requested as outlined below.

LiteSpeed may use Non-Personal Information to maintain, evaluate, improve and provide our Site, the Services and any other LiteSpeed products and services. We may retain Non-Personal Information indefinitely.

We may use Server Information to provide you with technical support services and to maintain, evaluate, improve and provide LiteSpeed products and services. We may also use such information to investigate unlicensed (and therefore unauthorized) uses of our software. LiteSpeed may maintain Server Information indefinitely, with the exception of usernames, passwords, and other login information given in connection with support service requests. Such login information will be purged when the ticket is closed.

Disclosure of Collected Information

LiteSpeed will only disclose Personal Information to third parties if acting under a good faith belief that such action is necessary, including but not limited to: (a) to resolve disputes, investigate problems, or comply with laws or regulations; (b) to enforce our Terms of Service; (c) to protect and defend the rights, property, or safety of our company or our users; or (d) in the event of a merger, acquisition or sale of all or substantially all LiteSpeed assets. Other than this limited activity, we do not share, sell, or rent any personal information to third parties.

You will receive notice in the form of modifications to this Policy when information about you might go to third parties other than as described in this Policy, and you always have the opportunity to contact us as set forth below if you do not wish your information to go to third parties.

LiteSpeed cannot be responsible for protecting your information if you share such information in publicly available sections of the Site such as the user forums, blog comments, or testimonials section. You should use your own judgment in disclosing this information on the Site.

Use of Cookies

“Cookies” are small pieces of information that your browser stores on your computer on behalf of a website that you have visited. Cookies may be used in order to complete transactions on our site. You can always choose not to accept cookies with the settings of your web browser, however, you may not be able to complete these transactions if you do not accept cookies.

Security of Personal Information

We use reasonable security methods to protect your personal information from unauthorized access, use or disclosure. No data transmission over the Internet or any wireless network can be guaranteed to be perfectly secure. While we try to protect your personal information, we cannot guarantee the security of any information you transmit to us, and you do so at your own risk.

LiteSpeed uses industry-standard SSL-encryption to protect sensitive data.

In the event that LiteSpeed becomes aware of a security breach, unauthorized disclosure or inadvertent disclosure concerning your information, you agree that LiteSpeed may notify you of such an event using the Personal Information previously provided.

You are responsible for maintaining your account’s security.

GDPR Statement

LiteSpeed Technologies values your users’ privacy. Although our software does not directly collect any personally identifiable information from visitors to your site, LiteSpeed may still be considered a data processor, as user information may be temporarily cached and/or logged, as outlined in this document.

Servers

LiteSpeed Web Server, OpenLiteSpeed, LiteSpeed Web ADC, and related software may record IP addresses as a part of normal logging. An access log and an error log may record visitor IP addresses and URL visited. The logs are stored locally on the system where LiteSpeed server software is installed and are not transferred to or accessed by LiteSpeed employees in any way, except as necessary in providing routine technical support if you request it. This logging may be turned off through configuration. It is up to individual server administrators to come up with their own schedule for removing such logs from the file system.

Cache Solutions

Our cache plugins potentially store a duplicate copy of every web page on display on your site. The pages are stored locally on the system where LiteSpeed server software is installed and are not transferred to or accessed by LiteSpeed employees in any way, except as necessary in providing routine technical support if you request it. All cache files are temporary, and may easily be purged before their natural expiration, if necessary, via a Purge All command. It is up to individual site administrators to come up with their own cache expiration rules.

LSCache for WordPress

In addition to caching, our WordPress plugin has an Image Optimization feature. When optimization is requested, images are transmitted to a remote LiteSpeed server, processed, and then transmitted back for use on your site. LiteSpeed keeps copies of optimized images for 7 days (in case of network stability issues) and then permanently deletes them.

Similarly, the WordPress plugin has a Reporting feature whereby a site owner can transmit an environment report to our server so that we may better provide technical support.

Neither of these features collects any visitor data. Only server and site data is involved.

Support Services

Sometimes, when you request technical support, LiteSpeed may ask for login credentials to various areas of your site. You may refuse to share such credentials, however refusal may impact LiteSpeed’s ability to provide the requested support services.

Upon completion of a support ticket, LiteSpeed immediately deletes all login credentials you may have shared.

Any user data encountered by LiteSpeed is kept strictly confidential. We never provide your support ticket information to any third party without your explicit consent.

Contact Us

If you would like to update information that you have voluntarily provided to us, stop receiving information from us, or exercise any of the rights granted to you under Privacy Laws, including the EU’s General Data Protection Regulation, please e-mail info@litespeedtech.com.