Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 170 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

EN

Loading...

Loading...

Loading...

Getting Started

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Landing in Transparent Edge

This guide is intended to help you start using Transparent Edge as quickly as possible.

First and foremost: We're always standing by to help with whatever you may need. Feel free to contact us if you have any questions or even if you want us to do the initial configuration for you.

About Transparent Edge

If you’re reading this, it's quite possible that you already know us and that you even know exactly how a CDN works. However, before you begin, we encourage you to have a look through our documentation to familiarize yourself with all the possibilities offered by Transparent Edge. This would be a good place to start.

Sign up

Well, we can see you’ve made the decision. Still, we’d like you to know that it's never too late to turn back. You can cancel your service—much to our regret—by sending a simple .

But let’s not cancel before we’ve even gotten started. To create a Transparent Edge account, just go to our page. We explain everything .

Your first configuration

We try to make things easy for you and we like simple things. That’s why we've developed a to help you create your first Transparent Edge configuration.

Remember: We love listening to you and improving our service is our number one priority. So, if you see something you don’t like or that seems confusing, or that you think can be done better or more simply, we encourage you to write us an .

We’d be more than happy to help you.

So now what?

Congratulations, your website is functioning through Transparent Edge, but that’s just the beginning. Transparent Edge is based on software, opening up a world of possibilities when it comes to configuring the CDN. In our documentation portal, you’ll find the most common use cases and we explain how to implement them in our guides and tutorials section.

If you'd like to go even further, you can consult our manual, which will give you a deep understanding of what can be done with Varnish and Transparent Edge.

Welcome

Main page

Here you’ll find all the documentation about using—and enjoying!—Transparent Edge. If you already know what you’re looking for, you ​can quickly access the reference. If you just got here, you’ll most likely want to start at the beginning:

email
sign-up
here
wizard
email
Varnish Enterprise
VCL Reference
API
Landing in Transparent Edge
Sign up process
Basics concepts
Dashboard
VCL Reference
Network Access Control List
Transcoding

Glosary

We have created a catalog of key terms that appear throughout this documentation to help you better understand our service.

API

An API is a set of routines, protocols, definitions, and tools for developing and integrating application software. APIs specify how the software components interact and they are used for GUI (Graphic User Interface) components.

You can consult our complete API here.

Brotli Compression

Brotli Compression is an open-source compression algorithm developed by Google. It is used to reduce file size.

Caching

Caching is the process of storing data in a cache. A cache is a temporary storage space. One example are the files that are automatically requested when you look at a web page, and that are stored on the hard drive in a cache subdirectory of the browser directory.

Cloud Computing

Cloud computing is a generic concept used to describe the hardware and software available through the Internet for storing and accessing data and programs through the network rather than on the hard drive of a computer. In this context, the cloud is the Internet itself.

Cloud Computing Architecture

Cloud computing architecture includes all the components and subcomponents required for cloud computing. These components typically consist of a front-end platform, back-end platforms, a cloud-based delivery, and a network.

DASH

Dynamic Adaptive Streaming over HTTP (DASH)—also known as MPEG-DASH—is an adaptive bitrate streaming technique that enables high-quality streaming of multimedia content over the Internet delivered from conventional HTTP web servers. MPEG-DASH works by breaking the content into a sequence of small HTTP segments. Each segment contains a short interval of video/audio and there are multiple different segments for each bitrate.

When the content is played by a MPEG-DASH client, the client automatically selects the segment with the highest possible bitrate.

Data Center

A data center is a facility that houses computer systems like servers, routers, switches, and firewalls, as well as other components like backup equipment and fire-suppression and air-conditioning systems. Data centers store, process, and distribute data to authorized persons and incorporate data into processes so they can be consulted and/or modified.

GSLB

GSLB (Global Server Load Balancing) is a method of distributing Internet traffic to a network of servers in different geographical locations. GSLB ensures that requests are correctly distributed and that they take into account the location of the person using them, improving latency and preventing a single server or group of servers from carrying the entire weight of the traffic.

HLS (HTTP Live Streaming)

HLS or HTTP Live Streaming is an HTTP-based adaptive bitrate streaming communications protocol developed by Apple Inc. as part of its QuickTime, Safari, OS X, and iOS software. It works similarly to MPEG-DASH in that it also breaks the stream into small HTTP-based downloadable segments.

A list of available streams, encoded at different bit rates, is sent to the client using an extended M3U playlist. Because it is based on HTTP, this protocol can traverse any firewall or proxy server.

Infrastructure as a Service (IaaS)

IaaS (Infrastructure as a Service) is a cloud computing model in which all the services of an infrastructure are provided through the Internet. This lets you manage all the applications, data, and operating systems while your provider manages the virtualization, the network, the storage, and the servers.

IaaS means you don’t have to maintain your own data center, with everything that involves, or worry about updating and physically checking all the equipment—the provider takes care of all that.

Normally, the user manages the infrastructure through a web panel or an API, making it easy to scale, update, and add new resources whenever necessary.

Internet Exchange Point

An Internet Exchange Point (IXP) is a physical infrastructure used by Internet Service Providers (ISPs) to exchange Internet traffic between their networks. Its primary purpose is for the networks to be able to connect to each other directly through an infrastructure rather than having to do so through a third-party network. This decreases the portion of traffic, reducing the average per-bit delivery cost of the content.

RTT (Round-trip Time)

Round-trip time is the time it takes, in milliseconds, for a network request to go from a starting point to a destination and back again.

TLS Acceleration

TLS acceleration, formerly known as SSL acceleration, is a method of offloading processor-intensive tasks, like those needed to establish and maintain a TLS session and the initial key exchange.

Most TLS (Transport Layer Security) accelerators use dedicated processing cards or custom chips (ASICs and RISC).

TLS (Transport Layer Security)

TLS (Transport Layer Security) is a security protocol defined by the IETF (Internet Engineering Task Force) to replace SSL 3.0 (Secure Sockets Layer 3.0). Like SSL, TLS uses digital certificates for user and network authentication.

TTL (Time-to-live)

In reference to the CDN, TTL (time to live) is the amount of time an object is cached. The cache system takes different factors into account to determine the lifetime of an object. Correctly configuring these parameters will guarantee the cache works correctly, avoiding unnecessary use of resources and ensuring an optimal user experience.

CNAME

A CNAME is a type of DNS record that maps one domain name (an alias) to another (the canonical name). The CNAME record always points to another domain name, never to an IP address; this second domain is ultimately what points to the IP address of the resource being accessed.

Last-Modified

The Last-modified header is an HTTP response header that contains the date and time when the origin server believes the resource was last modified.

It is used as a validator to determine if the resource is the same as the previously stored one. It is less accurate than an ETag header, but it can be a fallback mechanism.

Conditional requests containing If-Modified-Since or If-Unmodified-Since headers make use of this field.

MultiCDN

Multi-CDN is the strategy that combines several existing CDN providers into one large global network. This strategy dynamically optimizes and unifies the leading network infrastructure and cloud providers across the globe to quickly, safely, and reliably accelerate web content, no matter where users are located.

Origin Shield

Origin shield is an extra caching layer of the CDN that sits between the edge servers and the origin server. It is also known as second-level edge or layer 2.

It acts as a funnel, preventing the origin server or servers from receiving requests from multiple edge servers.

Private CDN

A private CDN is a CDN that only serves content to its owner. It consists of PoPs that can be caching servers, reverse proxies, or application delivery controllers. It can be as simple as two caching servers, or architecture large enough to serve petabytes of content.

Private Cloud

A private cloud is a computing model in which IT services are provided to a single organization through a private IT infrastructure. They are usually managed using Internet resources.

Platform as a Service (PaaS)

PaaS or Platform as a Service is a delivery method in cloud computing that is halfway between Software as a Service (SaaS) and Infrastructure as a Service (IaaS).

While IaaS provides infrastructure only, PaaS goes a step further and provides a bundle of software tools to design, test, review, and launch the product.

PaaS providers host hardware and software on their own infrastructure. Transparent Edge fits into this framework.

Reverse Proxy

A reverse proxy is a type of proxy server that sits between the client and the server on a network infrastructure. It manages incoming requests, interacting with the server on behalf of the client. This provides an additional layer of abstraction because the client never learns of the characteristics or existence of the server or servers, instead communicating directly with the reverse proxy.

A reverse proxy is often used for safety, load balancing, caching, optimizing load times, etc.

TTFB (Time-to-first-byte)

Time to first byte or TTFB is a measurement used to determine the responsiveness of a network resource like a web server or any other type of element. In the web environment, it refers to the time between when a user makes an HTTP request and when the first byte of the page is received by the client’s browser.

PoP (Point of Presence)

A PoP (point of presence) is a physical point where a service provider has equipment. It can include everything from a single server to an entire data center.

PoPs are where the edge servers that make up a CDN’s global network are located. The number and location of these PoPs have a great impact on the CDN’s coverage and performance.

Origin

When we talk about the origin, we're referring to the web servers that host your website. These servers can be in a single data center or in several. They can be in the cloud or on-premise. The only thing Transparent Edge needs for an origin to be valid is for it to respond via the HTTP protocol (with or without SSL) and via the port of your choosing (usually 80 or 443).

Cache-Control

Cache-control is an HTTP header used to specify browser caching policies, in both client requests and server responses.

Policies include how and where a resource is cached and its maximum age before expiring.

SDS (Software Defined Storage)

Software-defined storage is a storage architecture in which the storage management software is decoupled from its hardware. It’s generally conceived to run on any x86 system or sector standard, so that software does not depend on any proprietary hardware.

NoSQL (not only SQL)

A NoSQL is a database that does not use the SQL language to query and define data. The definition often encompasses various non-relational databases that lack tables and tabular relationships, where information is structured so as to give the system good horizontal scalability (adding more servers). The most common examples are for document storage or key-value systems.

SaaS (Software as a Service)

Software as a service is a software distribution model in which the software is available through the Internet (cloud-based applications) instead of being installed locally. In this case, the service provider hosts all the infrastructure required for the application to run and the client merely makes use of the software’s functions.

Web Services

A web service is a software service used to communicate between two or more networked devices. Specifically, it is a software application with a standardized way of integrating web-based applications. It uses technologies such as XML, SOAP, WSDL, and UDDI over HTTP or HTTPS protocols.

Cloud Services

The concept of cloud services encompasses any service available through the Internet from the server of a cloud computing provider.

Sign up process

Sign up

The process of signing up on Transparent Edge’s self-service platform begins by clicking the “Sign up” button in the top right corner of the . You will be redirected to a form where you have to complete two steps to create .

Houston, we have a problem

We want you to be as autonomous as possible on a day-to-day basis, but we know that sometimes you might need a hand. So, if you have any technical questions or problems—if even if you’re unhappy with the office coffee machine—don’t hesitate to write to our support team.

You can also go into the system on our, where you can open a ticket or talk to us through our chat.

Plus, in honor of our name, we’re happy to share a list of email addresses that you can use at any time:

Age

The Age response header tells us how many seconds the object has been in the cache of the node serving the request.

Architecture

Dashboard

The Transparent Edge Dashboard is the tool that allows users to control what's happening to their traffic in real-time and to know the consumptions of all the contracted services.

It can be run via API for the creation of custom dashboards integrated into the client infrastructure with all desired information, and is available in both Spanish and English.

On the main page, users can instantly view all the historical information about the service provided by Transparent Edge.

In the left-hand menu, users have direct access to the different sections that their permissions allow, such as user management, billing or the different services that Transparent provides for the client.

Prefechting

Prefetching is a functionality that lets us fetch content before it reaches users. It can be very useful on occasion. Let’s look at two examples:

  • Your website sees low traffic, but when a user arrives and requests an object, you still want it to be served by the CDN's cache.

  • You’re going to launch your new website and you’re expecting a great influx of visitors, which translates into a high number of requests to the CDN. If the CDN is cold and doesn’t have any objects cached, when you go live a flood of requests to your origin servers could cause systems to collapse.

To find out how to do a prefetch, click this.

Default headers

Features

Load Balancing

Load balancing is a way to distribute network traffic across multiple servers that uses balancing methods to improve the overall response time and availability of applications. It ensures equal distribution so that no one server has to handle too many requests.

There are several balancing methods or algorithms:

  • Least connections: Directs the traffic to the server with the fewest active connections.

  • Least response time: Directs the traffic to the server with the fewest active connections and the lowest average response time.

Purge

To purge means to invalidate content. When we work with cache systems, it’s often necessary to invalidate content and force the caches to go to the origin server for a new copy.

To find out more about the different invalidation methods, click

Device detection

Transparent Edge can use the User-Agent header to determine the type of device that is connecting and categorize it as a desktop, mobile, or tablet. To identify the device, Transparent Edge includes a header called X-Device in both the request to the origin and the response to the client. This header can have three values:

  • desktop

  • mobile

  • tablet

Rate Limit

At Transparent Edge, we give you the option to limit the number of requests per second that enter your website. Click this to get more details on how it works and how to activate it.

Locations and PoP

At the time of posting this entry (November 22, 2022), Transparent Edge has more than 50 PoP (Points of Presence) distributed worldwide to offer the best possible user experience. We are the only CDN with three PoP in Spain.

True-Client-IP and X-Forwarded-For

The client’s IP address is masked by Transparent Edge’s cache network. This means that the client’s origin server is always going to receive connections from an IP address in our cache network. Plus, that cache network will vary over time, making it impossible to filter by IP address (level 3 OSI).

To do so, at Transparent Edge we create extra non-standard HTTP headers to be able to send our clients the IP addresses of the actual users who are doing the browsing. This lets clients take the appropriate actions with the addresses even though the server is behind the cache network. This is done using the X-Forwarded-For and/or True-Client-IP headers.

From there, it’s up to the client to capture the header and operate with it.

What's the difference between X-Forwarded-For and True-Client-IP?

Transparent Edge’s IP addresses

As part of our transparency policy, it’s important that the Transparent Edge nodes can be identified at all times, not just by our clients but by any person who wishes to know them.

That is why we publish an endpointin our API with all our public IP addresses: .

That endpoint contains all the IP addresses that may connect to your origin/backend, it's extremely important that those IPs are allowed in the origin server(s) firewall, IDS, etc.

The same IPs can also be retrieved in plain format:

Query String

The query string is the part of a URL that contains the data to be sent to the web application. It generally includes fields added to the base URL by the client application, for example as part of an HTML form.

The example above is for a dynamic website. In this case, the server automatically creates the response page when the browser requests it, using the data that appears in the URL.

There are other methods of generating dynamic pages, such as separating the query strings using the “/” character. The server configuration lets us generate friendly URLs, like the one below:

In this case, the name of the variable is predefined on the server based on the variable’s position in the URL, and the content of the variable is its value (main, blog, 132).

Round robin: The traffic rotates through the available servers, which can be useful when the servers all have equal value and don’t require persistent connections.

  • IP hash: The client’s IP address determines which server receives its request.

  • Depending on the value of this header, Transparent Edge saves a version of each object for that device, making it possible to serve different content for each type of device under the same URL. If you want to find out how to do it, we explain it here.

    Force device

    Even if the device is detected, it's possible to, for instance, force a mobile device to display a desktop version. We do this using the Force-Device cookie. If this cookie is present, it takes priority over X-Device.

    X-Forwarded-For is a standard HTTP header where the software of various proxies adds the client’s IP address, including corporate systems. This means that if a request crosses several layers, several addressees will appear in the header separated by commas. As a result, clients will either have to “separate” the last IP address or analyze several of them.

    True-Client-IP returns the last IP address before the request reaches the Transparent Edge servers. It corresponds to the first IP address of X-Forwarded-For and is therefore the actual address of the client that initiated the connection.

    Transparent Edge’s IP addresses
    Locations and PoP
    Cache layers
    link
    geo_country_code
    X-Device
    Vary
    Cache headers
    Age
    TP-Cache
    True-Client-IP and X-Forwarded-For
    Protection against origin failures
    Rate Limit
    Geolocation and geoblocking
    Prefechting
    Refetching
    Fast purging
    HTTP Redirects
    Caching static vs. dynamic objects
    Rewriting of headers
    Device detection
    here.
    link
    https://api.transparentcdn.com/v2/companies/ipranges/
    https://api.transparentcdn.com/v2/companies/ipranges?format=txt

    Protection against origin failures

    When there are connectivity problems between Transparent Edge’s servers and the client's origin servers—whether due to a service failure or any other problem recovering content from the origin—Transparent Edge will serve an expired version of the content. This will be done for up to a maximum of eight hours or until communication is reestablished between Transparent Edge and the client’s origin servers.

    For Transparent Edge to be able to serve that expired content when there are problems, the objects served need to have a cache time (Cache-Control: max-age) of over 1 second. In other words, objects marked with non-cacheable headers (No-Store, No-Cache, Private, etc.) will not be served when there are problems, because they don't exist in the cache. So these requests will return an HTTP 503 error.

    Virtual Machine

    A virtual machine is software that emulates a computer system. Virtual machines can run programs or full operating systems.

    There are two major categories of virtual machines:

    • System virtual machines: They allow several operating systems to coexist on a single computer, strongly isolated from each other. The software layer that runs this virtualization is called a virtual machine monitor or hypervisor and, broadly speaking, it can run on the host’s bare hardware or on an operating system.

    • Process virtual machines: These run as a process inside the operating system by interpreting between the source code and the machine code to run the application, independent of the hardware platform and the operating system. The clearest example is the Java Virtual Machine.

    Edge Server

    In the context of the CDN, an edge server is a server whose main purpose is to serve content as close as possible to the person requesting it, reducing latency, load times, and bandwidth consumed. These servers are typically located at the logical extreme of a network, providing an entry point into the network or allowing communication between different networks.

    Provisioning

    The following sections explain how to manage the provisioning platform offered by Transparent Edge.

    Remember that every single task you can do from our dashboard can also be accomplished from our API.

    ETag

    The ETag or entity tag is one of the mechanisms that HTTP provides for web cache validation, which allows clients to make conditional requests. This allows caches to be more efficient and saves bandwidth, as a web server does not need to send a full response if the content has not changed.

    Fast purging

    At Transparent Edge, by default, we use fast purging to instantaneously purge content. This system lets us invalidate content on all Transparent Edge nodes in under two seconds.

    How do we implement fast purging?

    It’s quite simple. All Transparent Edge nodes are subscribed to a fanout queue in an internal Rabbit MQ cluster. When it receives a content invalidation message from our API, the message is immediately consumed by an agent which runs on all our CDN nodes. The agent locally invalidates the requested content at that node.

    If you want to find out more about how to invalidate content, click this link.

    Refetching

    Refetching is a function through which, after content is invalidated via a PURGE, you force the object to be requested again from the content-invalidation agent running on the CDN nodes.

    That way, when a real user request comes in, that object will already be in the cache and you won’t have to go get it from the origin.

    You can do a refetch via API or from our dashboard, as explained in this link.

    The BAN invalidation method is not compatible with refetching.

    Public Cloud

    A public cloud is a type of computing service that providers make available to anyone over the Internet. It can be a free service or sold on demand. Some providers offer clients a pay-as-you-go model based on their use of the CPU, the storage, or the bandwidth.

    Caching static vs. dynamic objects

    We understand static objects to be all objects requested from a server via HTTP or HTTPS protocol that don’t change after they are created. Examples of static objects include images, texts, compressed files (ZIP, TGZ, etc.), style sheets (CSS), JavaScript, XML, etc.

    We understand dynamic content to be just the opposite: requests made from a client to a server via HTTP or HTTPS protocol that change with every user iteration. Examples of dynamic content include a bank transaction, a personalization in the HTML of a website, or an online shopping process.

    At Transparent Edge, we can cache both static and dynamic content. However, the latter greatly depends on the type of website and how often it is updated.

    Let’s take the example of an e-commerce site that has a private user area in the upper-right menu, where a welcome message appears. When you log into the site, you see a page adapted to your shopping preferences. What many e-commerce and similar sites with user personalization do is directly not cache in this area, setting a cache header of zero seconds or sending no-cache in the Cache-Control.

    At Transparent Edge, it’s possible to cache all that content if the origin can use a cookie or another header to identify whether or not the user is logged in. So, we could save a cached version of the page for users who aren’t logged in (anonymous browsing) and a different version of the page for every one of the different users who are logged in.

    curl -v -H "User-Agent: TCDN" https://www.transparentcdn.com/ > /dev/null
    < HTTP/1.1 200 OK
    < Server: nginx
    < Date: Wed, 20 May 2020 15:11:57 GMT
    < Content-Type: text/html; charset=UTF-8
    < Transfer-Encoding: chunked
    < Connection: keep-alive
    < Link: <https://www.transparentcdn.com/wp-json/>; rel="https://api.w.org/"
    < Link: </wp-includes/css/dist/block-library/style.min.css?ver=5.2.4>; rel=preload; as=style, </wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.1.4>; rel=preload; as=style, </wp-content/plugins/cookie-law-info/public/css/cookie-law-info-public.css?ver=1.8.1>; rel=preload; as=style, </wp-content/plugins/cookie-law-info/public/css/cookie-law-info-gdpr.css?ver=1.8.1>; rel=preload; as=style, </wp-content/plugins/revslider/public/assets/css/rs6.css?ver=6.1.1>; rel=preload; as=style, </wp-content/themes/cesis/style.css?ver=5.2.4>; rel=preload; as=style, </wp-content/themes/cesis_child_theme/style.css?ver=5.2.4>; rel=preload; as=style, </wp-content/themes/cesis/css/cesis_media_queries.css?ver=5.2.4>; rel=preload; as=style, </wp-content/themes/cesis/css/cesis_plugins.css?ver=5.2.4>; rel=preload; as=style, </wp-content/themes/cesis/includes/fonts/cesis_icons/cesis_icons.css?ver=5.2.4>; rel=preload; as=style, </wp-admin/admin-ajax.php?action=dynamic_css?ver=5.2.4>; rel=preload; as=style, </wp-content/plugins/js_composer/assets/css/vc_lte_ie9.min.css?ver=6.0.5>; rel=preload; as=style, </wp-content/plugins/js_composer/assets/css/js_composer.min.css?ver=6.0.5>; rel=preload; as=style, </wp-content/themes/cesis/admin/redux-extensions/extensions/dev_iconselect/dev_iconselect/include/fontawesome/css/font-awesome-social.css?ver=5.2.4>; rel=preload; as=style, </wp-includes/js/jquery/jquery.js?ver=1.12.4-wp>; rel=preload; as=script, </wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1>; rel=preload; as=script, </wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=5.1.4>; rel=preload; as=script, </wp-content/plugins/cookie-law-info/public/js/cookie-law-info-public.js?ver=1.8.1>; rel=preload; as=script, </wp-content/plugins/revslider/public/assets/js/revolution.tools.min.js?ver=6.0>; rel=preload; as=script, </wp-content/plugins/revslider/public/assets/js/rs6.min.js?ver=6.1.1>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_collapse.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_countup.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_easing.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_fittext.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/fitvids.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/fonticonpicker.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/lightgallery.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/owlcarousel.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/scrollmagic.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_transition.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/smartmenus.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/isotope.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/waypoints.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_custom.js?ver=5.2.4>; rel=preload; as=script
    < TP-l2-Cache: HIT
    < X-Device: desktop
    < Age: 5622
    < content-security-policy-report-only: default-src https: data: 'unsafe-inline' 'unsafe-eval'; report-uri https://api.transparentcdn.com/v1/csp/report/4/
    < TP-Cache: HIT
    < Vary: , Accept-Encoding
    < strict-transport-security: max-age=31536000; includeSubDomains; preload
    www.ejemplo.net/web.php?campo1=valor1&campo2=valor2
    www.ejemplo.net/main/blog/132

    geo_country_code

    By default, Transparent Edge geolocates all requests that pass through our systems by sending a header to the origin with the country code from which the request was made. This is the Geo_Country_Code header.

    geo_country_code: ES

    If the system was unable to locate the user's IP, it sends the Unknown string in the header.

    Thanks to this feature, there are a great many things we can do based on the location of the end user, such as:

    • Block/permit content from certain countries.

    • Send requests to different origins based on the geographical location of the end user.

    • Serve special content by country.

    • Rewrite headers based on the country the request came from.

    • Custom rules based on that header.

    Select your solution package

    First, you have to choose the solution that best meets your needs from the following options:

    Advanced

    Business

    You can find more detailed information about each package (response time, type of support provided, cost, etc.) here. If your needs ever change in the future, you can request to change your support package by sending an email to [email protected].

    Contact and billing information

    In this second step, you can enter a promotional code or voucher in the space provided in the contracted services summary. You then have to fill in the following contact information:

    Full name

    Email address

    This email address will be Transparent Edge’s main means of contacting you. So it’s essential that the email address you give us is valid, that you have access to it, and—very important—that you check it often. Plus, this email address will be your username when you log into the platform.

    Web page

    After your full name and email address, you have to enter the primary domain of your website, e.g.: “www.prueba.com”.

    Once you have completed the registration process and you log in to Transparent Edge’s self-service dashboard, you will see that the domain (site) you entered has been added to the settings of your brand-new profile. Of course, you are free to add as many new domains as you need or delete any that are no longer necessary.

    Password

    To continue with the registration process, you have to enter a password with at least eight characters that contains one uppercase letter, one lowercase letter, and one number.

    After filling in your contact information, fill in the fields with your billing information:

    Company name

    Tax ID

    Your company’s tax ID code (CIF in Spain) or your personal tax ID number (NIF in Spain).

    Address

    You have to fill in all the fields to be able to continue with the registration process.

    Once you've entered all the required information into the form, you’ll have to click the checkbox to accept the terms and conditions of use for the platform. You’ll also have to click the checkbox for the terms and conditions of the contract.

    Payment authorization

    Finally, you’ll have to confirm the payment authorization. To do so, you’ll be redirected through Transparent Edge’s gateway and you’ll have to enter your credit card data.

    You will be charged at the end of each month based on the support package you purchased as well as your consumption.

    If your payment method is rejected by the gateway, you’ll see an error message and be redirected to the registration form where you can verify the information you entered previously and fix any errors.

    User account activation

    Once you have completed the registration process, you’ll have to activate your brand-new account. To do so, click on the “VERIFY YOUR EMAIL” link in the welcome message you receive in your inbox.

    This welcome message is automatically sent to the email address you entered in the registration form once you have completed that step. You’ll then have 48 hours to confirm your email. You won’t have access to Transparent Edge’s self-service platform until your account is activated.

    That email will also tell you Transparent Edge’s CNAME (Canonical NAME) so you can note it and adjust the DNS.

    For instance, our assigned CNAME record would be: caching.cNNN.edge2befaster.net.

    In addition to the CNAME, it's important for there to be a «tcdn.txt» file in the root directory of your website with the content of the activation email.

    If you don’t receive an email, first check your spam folder. If it's not there either, contact Transparent Edge by sending an email to [email protected] so we can manually activate your user account.

    home page
    your account
    System
  • Sales

  • Marketing

  • HR

  • Enrique Rodriguez (Customer satisfaction)

  • (CTO)

  • Jorge Román (CEO)

  • ticket
    management
    portal
    Support

    Cache effectiveness

    The hit ratio is one of Transparent Edge’s most important indicators. It tells us how effectively Transparent Edge is performing and the degree of optimization of a particular website.

    You can see the hit ratio on Transparent Edge’s client portal.

    A hit ratio under 80% needs to be reviewed. However, 80% means that of all the requests and bandwidth of a particular site, 80% are being served from Transparent Edge without going to the client’s origin server. So, only 20% of the requests are going to the web server.

    In other words, we are saving 80% on infrastructure costs at the origin.

    To learn more about how to improve your hit ratio, have a look at this entry.

    Cache headers

    Cache headers are key to the correct functioning of a cache system in general, and of Transparent Edge in particular. Using them significantly increases the load speed of web pages, improving the user experience.

    Transparent Edge uses several types of headers to know whether or not to store an object in its cache, but in this document, we're going to focus on the Cache-Control header.

    At Transparent Edge, the Cache-Control header takes preference over all other cache headers—so if there are more than one, it’s the only one we’ll pay heed to.

    The Cache-Control header is an improvement in HTTP/1.1 which simplifies the previous caching mechanisms in the HTTP/1.0 protocol. We use this header to indicate to intermediate caches and the browser cache whether or not an object should be stored and for how much time.

    Like all HTTP headers, Cache-Control is a key-value pair, where the key is always the word Cache-Control. In terms of the server’s response, this value can be:

    public

    The Public header indicates to the cache that the object is public and therefore cacheable. It’s not typically found alone in the Cache-Control header.

    private

    Unlike Public, the Private header indicates that the content should not be cached because it is user-personalized content and should only be stored on the client's local device.

    no-cache

    The No-Cache header prevents an object from being cached in Transparent Edge. Even if the object is stored, it is never used.

    no-store

    This option prevents the cache from storing—and therefore caching—the object.

    The Private, No-Cache, and No-Store headers all have the same effect on browsing (with slight differences): They force the content to be cached on the client’s origin servers.

    must-revalidate

    This option forces the cache to go to the origin for a new copy of the object, telling it to disregard the rest of the cache headers and go get a new copy.

    proxy-revalidate

    This works just like Must-Revalidate but only affects proxies.

    max-age

    This header is used to indicate to Transparent Edge how many seconds we want the object to be stored in the cache and marked as valid. Once this time has passed, the object is marked as expired and the system is forced to go to the client’s origin servers for a new copy. This option affects both proxies and browser caches.

    s-maxage

    This is exactly the same as Max-Age, except it only affects the behavior of proxies and not browser caches. The two can be used in conjunction to create special behaviors, for example:

    In this special case, the object will be stored on Transparent Edge for one hour (3600 s), but it won’t be stored in the browser.

    Rewriting of headers

    Because we are based on Varnish Enterprise software, Transparent Edge offers great flexibility when it comes to changing your website’s default behavior.

    Rewriting headers is very common and rather easy to do. The most typical cases are:

    Rewriting the Host header

    The typical use case:

    sub vcl_recv{
      if ((req.http.host == "www.transparentcdn.com") && (bereq.url ~ "/blog")) {
        set http.host == "blog.transparentcdn.com"
        set req.backend_hint = c83_tcdn.backend();
      }
    }

    Rewriting the Cache-Control header

    Deleting headers

    Based on the previous example, we can erase the Cache-Control header that comes from the origin before forcing the cache time.

    SSL

    When required, Transparent Edge can do SSL terminations by caching requests as if they were in HTTP. In this case, the traffic is sent encrypted between the user and Transparent Edge. The certificate is then decrypted in our caches and all the traffic within the Transparent Edge platform is sent in HTTP. This lets us apply web caching technology to the SSL traffic. The traffic between Transparent Edge and the client's origin server can be sent in HTTP or HTTPS, at the client’s discretion.

    By default, we use HTTP2 on tlsv1.2 and tlsv1.3.

    Automatic management of SSL

    At Transparent Edge, there are always several different ways of doing something. In this case, we give you two options for serving a secure website.

    The first is for you to purchase your certificates from your trusted provider, and once you have them you can upload them to our platform or send us a so we can do it for you.

    To upload certificates to the platform, go to our, select Provisioning from the left side menu, and then click on Certificates.

    The second, and simpler, option is to leave the entire matter of certificates to us. We’ll take care of sending you valid certificates and renewing them, so you don’t have to do or worry about anything.

    For this to happen, the domain does have to be pointing to Transparent Edge.

    It’s easy: in the Provisioning section of the, click on the Sites tab and then on the padlock icon for the website you want to protect with SSL.

    X-Device

    Transparent Edge can use the User-Agent header to determine the type of device that is connecting and categorize it as a desktop, mobile, or tablet.

    To identify the device, Transparent Edge includes a header called X-Device in both the request to the origin and the response to the client. This header can have three values:

    • desktop

    • mobile

    • tablet

    Depending on the value of this header, Transparent Edge saves a version of each object for that device, making it possible to serve different content for each type of device under the same URL.

    Force device (feature available on request)

    Even if the device is detected, it's possible to, for instance, force a mobile device to display a desktop version. We do this using the Force-Device cookie. If this cookie is present, it takes priority over X-Device.

    HTTP, How does it work?

    Cache systems like Transparent Edge can provide countless benefits to your website, like reducing load times of pages, absorbing high traffic volumes, improving the security of portals, and sometimes even reducing infrastructure costs.

    However, like everything in this world, this one also has its difficulties, although once you understand how a cache works and the flow of HTTP requests, it’s relatively straightforward. In this entry, we’ll explain how an HTTP request works internally, analyze request and response headers, and show you how they get interpreted by an HTTP cache.

    The figure above shows the flow of a website request for an HTTP object from a conventional client to the web server that hosts the site www.transparentedge.eu (without passing through a cache). Not too complicated, right? Let’s take a deeper look.

    After establishing the TCP connection with the server—generally over port 80—the client sends an HTTP GET method request for the “/” object (this “slash” object is the site’s homepage; if the client wanted a different object, instead of “/” you would see, for instance, “/categories” or “/image.png”).

    The client sends the GET request with a set of headers, all of which are optional except the Host header. The Host header is used so that servers configured for multiple domains know which of their websites needs to be served to the client. Without this header, the server would understand that it had to serve the default website. As mentioned, the rest of the headers are optional, although modern browsers typically send a good deal of information in request headers. These often include the User-Agent header, which identifies the type of browser used for the request; the Cookie header, which contains information stored on the user's browser that is put to multiple uses by the website; and the Referer header, which tells the server the address of the page making the request.

    TP-Cache

    As we explain in the document

    Transparent Edge is made up of two cache layers.

    We can optionally add a header in the Mid-Tier to all the requests that pass through the CDN to let us know whether the object was served from the cache or whether it was necessary to go to the next layer or the origin server to find it.

    These headers are TP-Cache (in layer 1) and TP2-Cache (only in Mid-Tier). This header can have the value HIT or MISS depending on whether or not the object was served from the cache.

    Let's look at some examples:

    In this case, the object was served from one of the layer 1 caches, without having to go to the Mid-Tier to find it.

    This is the opposite scenario: The object was not in layer 1 or was expired there, and when requesting it from the Mid-Tier that cache found a fresh version of the object which was served from that layer. Therefore, the request did not ultimately have to go to the client's origin servers.

    Vary

    The Vary header can be very useful, but sometimes dangerous. It is used to tell caches (either the browser cache, a proxy, or a CDN like Transparent Edge) to save different versions of the same object depending on a given header. Let’s look at some examples of how to use it well and what not do to.

    Bad use of the Vary header

    In the response headers in this example, we can see the Vary: Cookies header. This tells the caches to save a different version of the same object—like an image or a homepage—for each different cookie received. In other words, this type of request would have a very low hit ratio, possibly below 10%, rendering the cache system ineffective.

    Another bad use example is the Vary: User-agent header, which would save a different version of the same object for every user-agent that visits the site. Be warned, there are quite a few user-agents out there!

    Smooth Streaming

    Smooth Streaming is a technology designed by Microsoft for its IIS Media Services product. This product enables the adaptive streaming of media to clients over HTTP.

    HTTP 5xx Error Codes

    When a is not able to process a request or simply isn’t available, your web browser receives a 5xx error response code—or in other words a code between 500 and 599.

    These are web server error codes, which are very different from other errors like 404 - Not found, which typically occurs when you request an object that doesn’t exist on the server.

    Some of the most frequent error codes are:

    • 500 - Internal Server Error

    • 502 - Bad Gateway

    Historic

    This page contains all the historical information of the service provided by Transparent Edge.

    The last six months are displayed by default but you can filter by the last year, month or week, or by specific website.

    Depending on the filter chosen, all the information panels are recalculated. All the graphs and information provided can also be downloaded in PNG, SVG or CSV format by clicking on the top left of each panel.

    If you need to share information already filtered, you can copy the link and send it to another user to view the same information.

    The first and second panels offer more detailed information on requests per second and bandwidth, itemized by site and time period. The panel normally displays information for today. It can also be filtered so that they are displayed together, showing the total for all sites, or separately, showing all graphs stacked to count the total requests per second and bandwidth of all sites linked to Transparent Edge.

    The third and fourth panels show the information from the first and second panels (request per second and bandwidth) but displayed as a pie chart, giving more graphic visualization of this information.

    Forcing No-Cache

    Just what we all love: Sending headers from the origin

    At Transparent Edge we want our customers to have as much autonomy as they can. That's why we always encourage a CDN configuration that's as simple as possible and for cache headers to be sent from the origin servers whenever possible. This contains information on how to do it.

    To force an object to not be cached, you can configure the Cache-Control header with any of these values:

    Although there are small differences in each one, they have the same effect in practice which is for the content not to be cached. If we had to choose one, we’d use no-cache.

    Cache layers

    Transparent Edge has two cache layers that are optional for our clients. The goal is to improve the and reduce the number of unnecessary requests to their origin servers. Plus, this type of architecture also protects against floods of traffic from, for instance, a recursive invalidation of a highly trafficked website.

    Layer 1

    Layer 1 is comprised of distributed servers, which are what initially attend to end-user requests. They act as SSL terminations and cache servers, serving nearly 95% of Transparent Edge.

    These Layer 1 servers can be configured to be the origin of all the Layer 2 servers. That way, when an object needs to be refreshed, the Layer 2 servers send the request directly to the Layer 1 servers.

    Invalidating content

    Invalidating (or purging) is as important as caching. Purging removes the object from the cache before it expires or is evicted.

    Once an object has been purged, a subsequent request will fetch it from the source instead of from the cache.

    Here, we'll explain how to invalidate using four methods:

    • Simple invalidations (PURGES)​

    • Soft invalidations (SOFTPURGES)​

    Geolocation and geoblocking

    At Transparent Edge, by default, we geolocate all the requests that pass through our systems by sending a header to the origin with the code for the country where the request was made. This header is Geo_Country_Code.

    We use the for this functionality, which can detect the country with an accuracy of 99.8%.

    We can send other data provided by this database to the origin in the form of an HTTP header—the city, for instance—but bear in mind that the database can only detect cities with an accuracy of around 75% for Spain. You can check the accuracy data by country​

    The value of the Geo_Country_Code header is the country code from the standard.​

    If the system is not able to locate the user’s IP address, it sends the Unknown string within the header.

    This functionality gives us a range of possibilities for taking into account the end user’s location, such as:

    Basics concepts

    FAQ

    This section contains all the basic concepts about our service that you should understand before you begin:

    Recursive invalidations (BANS)​

  • Simple + Warm Up​

  • There is another type of invalidation that leverages on tags attached to the objects and is explained here.

    Remember that everything that can be done on our dashboard is available via API for automation.

    To create an invalidation, log in to our dashboard and go to:

    Invalidation -> Purge -> Purge URLs

    A wizard will be displayed explaining the different invalidation methods available. You can click on "Advanced mode" to paste a list of URLs directly or complete them using the wizard.

    Simple invalidations (PURGES)

    This is the standard way of purging an object. A full URL is required, and you can invalidate multiple URLs in a single request, for example:

    https://www.example.com/myobject.js

    https://www.example.com/myobject.js?v=2.0

    https://www.example.com/img/image.jpg

    Protocol is required but it does not matter whether it is http or https.

    This method immediately removes the object from the cache, and the subsequent request will fetch it from the source (your original backend).

    Soft invalidations (SOFTPURGES)

    This method purges by complete URL, like the PURGE method, but it has one notable difference: objects are not immediately purged from the cache, instead they are flagged as expired (or stale). The subsequent request will serve the cached object, and a background process will update the object in the cache from the source. If the update succeeds, the old expired object will be replaced.

    This method is very useful if you want to protect yourself against backend failures. If your backend has issues and is unable to serve content and you PURGE an object, the CDN will return a 503 error. If you use SOFTPURGE instead of an error, it will return the cached yet expired object (provided that the object is actually in the cache). You decide.

    API tip: to transform a purge into a softpurge, add {..., "soft": true} to your payload.

    Recursive invalidations (BANS)

    This method uses a pattern to invalidate content which is similar to a regular expression.

    For example, if you wanted to invalidate all the images in /content/img/, you would request a BAN invalidation with the following pattern:

    https://www.example.com/content/img/

    You still need to incorporate the protocol and domain.

    Be very careful with BANs. A BAN at the root of your site: https://www.example.com/ invalidates the full content of the cache, and all subsequent requests will go directly to your backend.

    We encourage you to use other available methods, including invalidation by tags.

    Simple + Warm Up

    This method behaves in the same way as the PURGE method, the difference is that after the object is invalidated from the cache a request is made to the same URL automatically to warm the cache with a fresh object.

    API tip: to transform a purge into a purge + warm up, add {..., "refetch": true} to your payload.

    Dynamic Adaptive Streaming over HTTP (DASH)
    Glosary
    Let's start at the beginning
    Things to consider
    Houston, we have a problem
    HTTP, How does it work?
    Invalidating methods
    DNS Pointing
    Log formats
    Predefined headers
    Default headers
    Forcing No-Cache
    Architecture
    Cache effectiveness
    SSL
    HTTP 5xx Error Codes
    Features
    ticket
    client portal
    portal

    Predefined headers

    All requests that pass through Transparent Edge automatically get a set of headers added to them that we think can be useful for the origin. They are as follows:

    True-Client-IP

    Because CDNs function as reverse proxies, if you don’t make any changes, you’ll no longer see your users’ IP addresses in your origins (and therefore in your logs). Instead, you’ll see the IP addresses of Transparent Edge's servers. This is because the users establish a connection with our servers, so we are the ones making a request to their servers in the case of a MISS. This header is included to give you traceability of end users. Unlike the X-Forwarded-For header, this one sends the end user’s IP without any intermediate proxies.

    geo_country_code and geo_region_code

    For each request, we geolocate the users’ IP addresses using a specific geolocation database. Although it's possible to gather more information using VCL, we take the most common and useful data and include them in header paths available in both VCL and the client's origins, with data about the country's ISO code and the geographical region where the IP is located.

    We update the databases weekly, but the accuracy of the region is limited by factors such as the providers’ CGNAT. The country code, however, is highly reliable.

    X-Device

    We know that managing user-agents can be a nightmare, which is why we standardize the User-Agent header of the original request and create an extra header with three possible values: mobile, tablet y desktop.

    X-Forwarded-Proto

    Despite the growing standardization of HTTPS certificates worldwide, there are still web services that use the HTTP protocol to communicate in plaintext. The X-Forwarded-Proto header—also reflected in logs—has a value of http or https to indicate whether the original request was in plaintext or ciphertext.

    X-Remote-Port

    The same as the header True-Client-IP , this header is included to give you traceability of the port used by the end users as received by Transparent Edge`s servers.

    HTTP/2

    HTTP/2 is a major revision of the HTTP protocol that enables more efficient use of web resources. It is compatible with HTTP/1.1 and does not involve significant changes to basic concepts like HTTP methods, header fields, and status codes.

    It does however include countless improvements, like the use of a single connection, the compression of header fields, and the server push or cache push service that enables the server to preemptively push information to the client before the client requests it. So, for instance, when an HTML page is requested that is linked to style sheets, images, and other resources, everything is sent together in the first request (multiplexing) rather than having to wait to parse the HTML file.

    sub vcl_backend_response {
         if ((bereq.http.host == "www.transparentcdn.com") && (bereq.url ~ "/my-new-url")) {
                set beresp.http.Cache-Control = "max-age=0, s-maxage=10";
                set beresp.ttl = 10s;
        }
    }
    sub vcl_backend_response {    
        if ((bereq.http.host == "www.transparent.com") && (bereq.url ~ "/my-new-url")) {
                unset beresp.http.Cache-Control;
                set beresp.http.Cache-Control = "max-age=0, s-maxage=10";
                set beresp.ttl = 10s;
        }
    }    

    Blocking/allowing content from certain countries.

  • Sending requests to a particular origin based on the end user’s geographic location.

  • Serving special content by country.

  • Rewriting headers based on the country requests come from.

  • Establishing personalized rules based on the value of the header.

  • To see how to implement geoblocks with this header, click here.​

    geo_country_code: ES
    GeoIP2 Enterprise Database
    here.
    ISO 3166

    In this final case, a valid copy of the object was not found in the cache, either because it was not a cacheable object or because it was expired, so the request went directly to the client's origin servers.

    For reasons of clarity, in this document we have been speaking about the Cache-Control header, but Transparent Edge complies with the letter and spirit of the RFC, so any of the cache headers available there can be used.

    TP-Cache: HIT
    TP2-Cache: MISS
    TP-Cache: MISS
    TP2-Cache: HIT
    https://docs.transparentedge.eu/v/english/getting-started/faq/arquitectura/capas-de-cache
    TP-Cache: MISS
    TP2-Cache: MISS
    Good use of the Vary header

    Here we are saving a different version of an object based on whether or not the object is compressed. This is done to maintain backward compatibility with old browsers and is the typical example of using this header well.

    Another example is the Vary: X-Device header. When we use Vary this way, we tell Transparent Edge to save a different version of the object based on the X-Device value, which can be desktop, mobile, or tablet.

    You can read more about detecting mobile devices here.

    Learn more about this header here.

    HTTP/1.1 200 OK
    Vary: Cookies
    Cache-control: max-age=86400
    Content-Type: text/html; charset=UTF-8
    TSSecure: SecureLayer
    client-id: 4
    TP-l2-Cache: MISS
    X-Device: desktop
    Date: Mon, 19 Oct 2015 15:24:05 GMT
    Age: 85783
    Connection: keep-alive
    TP-Cache: HIT

    503 - Service Unavailable

  • 504 - Gateway Timeout

  • For technical reasons, CDNs mask all those status codes into a single error code. At Transparent Edge, we use the code 503 for any 5xx server error.

    There can be many reasons for a 503 error from the CDN. They are categorized in the response headers and in the HTML code of the error, providing relevant information that can help us discern the error type. These headers begin with TCDN- and all of them end with a numerical value that lets us accurately identify the request. For instance:

    List of codes

    • TCDN-BENG-5xx - Backend Error No Grace

    The object isn’t in the cache and the origin has responded with a 5xx error not categorized in any of the tags below. The number in the header is the exact error code returned by the origin. For instance: TCDN-BENG-504.

    • TCDN-BENG-Service Unavailable - Backend Error No Grace (Network error)

    The object isn’t in the cache and a network error ocurred while fetching it from the origin backend.

    • TCDN-SBPR - Sick Backend POST/PUT Request

    The request is not cacheable and caused an error at the origin.

    • TCDN-SBNG - Sick Backend No Grace

    The origin is marked as sick (its healthcheck is failing) and the object isn’t in the cache.

    • TCDN-DNF - Domain Not Found

    The domain was not found; it is not registered in the CDN.

    • TCDN-NBD - No Backend Defined

    The domain exists in the CDN but no backend has been assigned to it.

    • TCDN-OENG - Origin Error No Grace

    There was an origin error 5xx and we are keeping the original status code from origin without 503 status code masking due the X-Show-Origin-Errorsheader.

    • TCDN-OK - No backend error found

    The request was delivered successfully.

    web server
    Not caching or bypassing the cache of the CDN

    The following covers the majority of use cases for not caching or bypassing the cache of the CDN.

    Bypass or ignore the cache of the CDN

    With this option we can ignore the cache and go directly to the origin to retrieve a fresh object always. Note that this doesn't prevent the object from entering in the cached after the backend response is executed, but it ensures that the client will never receive a cached response. Just call bypass_cache to ignore, skip or bypass the cache.

    Don’t cache the object in the CDN by rewriting the origin headers

    With this code, we rewrite the headers that come from the origin and add the amount of time we want the object stored in the cache. In our case, it is 0s—both for the internal TTL which will force the object to be stored in the Transparent Edge cache, and for the cache header to be sent to the browser (Cache-Control).

    You can also get more details about rewriting headers here.

    link
    Cache-Control: max-age=0, s-maxage=3600
    curl -v -H "User-Agent: TCDN" https://www.transparentcdn.com/ > /dev/null
    < HTTP/1.1 200 OK
    < Server: nginx
    < Date: Wed, 20 May 2020 15:11:57 GMT
    < Content-Type: text/html; charset=UTF-8
    < Transfer-Encoding: chunked
    < Connection: keep-alive
    < Link: <https://www.transparentcdn.com/wp-json/>; rel="https://api.w.org/"
    < Link: </wp-includes/css/dist/block-library/style.min.css?ver=5.2.4>; rel=preload; as=style, </wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.1.4>; rel=preload; as=style, </wp-content/plugins/cookie-law-info/public/css/cookie-law-info-public.css?ver=1.8.1>; rel=preload; as=style, </wp-content/plugins/cookie-law-info/public/css/cookie-law-info-gdpr.css?ver=1.8.1>; rel=preload; as=style, </wp-content/plugins/revslider/public/assets/css/rs6.css?ver=6.1.1>; rel=preload; as=style, </wp-content/themes/cesis/style.css?ver=5.2.4>; rel=preload; as=style, </wp-content/themes/cesis_child_theme/style.css?ver=5.2.4>; rel=preload; as=style, </wp-content/themes/cesis/css/cesis_media_queries.css?ver=5.2.4>; rel=preload; as=style, </wp-content/themes/cesis/css/cesis_plugins.css?ver=5.2.4>; rel=preload; as=style, </wp-content/themes/cesis/includes/fonts/cesis_icons/cesis_icons.css?ver=5.2.4>; rel=preload; as=style, </wp-admin/admin-ajax.php?action=dynamic_css?ver=5.2.4>; rel=preload; as=style, </wp-content/plugins/js_composer/assets/css/vc_lte_ie9.min.css?ver=6.0.5>; rel=preload; as=style, </wp-content/plugins/js_composer/assets/css/js_composer.min.css?ver=6.0.5>; rel=preload; as=style, </wp-content/themes/cesis/admin/redux-extensions/extensions/dev_iconselect/dev_iconselect/include/fontawesome/css/font-awesome-social.css?ver=5.2.4>; rel=preload; as=style, </wp-includes/js/jquery/jquery.js?ver=1.12.4-wp>; rel=preload; as=script, </wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1>; rel=preload; as=script, </wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=5.1.4>; rel=preload; as=script, </wp-content/plugins/cookie-law-info/public/js/cookie-law-info-public.js?ver=1.8.1>; rel=preload; as=script, </wp-content/plugins/revslider/public/assets/js/revolution.tools.min.js?ver=6.0>; rel=preload; as=script, </wp-content/plugins/revslider/public/assets/js/rs6.min.js?ver=6.1.1>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_collapse.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_countup.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_easing.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_fittext.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/fitvids.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/fonticonpicker.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/lightgallery.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/owlcarousel.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/scrollmagic.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_transition.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/smartmenus.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/isotope.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/waypoints.js?ver=5.2.4>; rel=preload; as=script, </wp-content/themes/cesis/js/cesis_custom.js?ver=5.2.4>; rel=preload; as=script
    < TP-l2-Cache: HIT
    < X-Device: desktop
    < Age: 5622
    < content-security-policy-report-only: default-src https: data: 'unsafe-inline' 'unsafe-eval'; report-uri https://api.transparentcdn.com/v1/csp/report/4/
    < TP-Cache: HIT
    < Vary: , Accept-Encoding
    < strict-transport-security: max-age=31536000; includeSubDomains; preload
    HTTP/1.1 200 OK
    Vary: Accept-Encoding
    Cache-control: max-age=86400
    Content-Type: text/html; charset=UTF-8
    TSSecure: SecureLayer
    client-id: 4
    TP-l2-Cache: MISS
    X-Device: desktop
    Date: Mon, 19 Oct 2015 15:24:05 GMT
    Age: 85783
    Connection: keep-alive
    TP-Cache: HIT
    TCDN-BENG-504:275330054.
    no-cache
    no-store
    max-age=0
    private
    must-revalidate
    sub vcl_recv {    
        if (req.http.host == "www.transparent.com" && req.url ~ "^/admin") {
            call bypass_cache;
        }
    } 
    sub vcl_backend_response {    
        if ((bereq.http.host == "www.transparent.com") && (bereq.url ~ "/my-new-url")) {
                unset beresp.http.Cache-Control;
                set beresp.http.Cache-Control = "max-age=0";
                set beresp.ttl = 0s;
        }
    } 

    In the response to this request, the web server sends the content itself along with another set of headers, some of which are rather important to the subject at hand.

    On the first line, we see that the server responds with “HTTP/1.1 200 OK”. Here the server is using code 200 to tell the client that the requested resource has been found and served correctly. Section 10 of the RFC2616 defines all the status codes that a web server can return in response to an HTTP request. Second, we see the Cache-Control header, which can be configured in the web server or in code. It tells the client’s browser (and all the caches the request passes through) that the object must be updated every 2592000 seconds in this case—or in other words, that the object can be stored on the browser’s cache for 30 days. To keep this brief, we’re not going to analyze the rest of the headers; instead, we’ll see what would happen if this request did pass through a cache like Transparent Edge. Let’s take a look:

    This might appear to complicate things, but it's actually simpler than it seems. To help you understand it, we’ll follow the request through all its steps.

    First—and this step is always the same—the client or web browser makes an HTTP request. But instead of going directly to the web server, in this case it's going to pass through a cache like Transparent Edge. This step is completely transparent to the web client, because it doesn’t actually know whether the request is going directly to a web server or to a cache. So: The request is received by the cache system and the cache checks whether or not the object being requested by the client is available in the cache. If it is, the object is returned without having to request it from the web server. If it isn’t, as is the case in our example, the cache will request the object from the web server, resending the exact same request it received from the client (step 2).

    At this point, the web server receives the request, processes it, and sends the requested content to the cache along with the response headers (step 3).

    The cache has just received the content from the web server and this is where the magic of caching occurs: the cache inspects the headers of the HTTP response and reads the Cache-Control header where the server tells it to store the object for 2592000 seconds (30 days). This means that during that time, every time the cache receives a request for that object it won’t have to get it from the web server and can instead serve it directly from the cache. This improves the loading speed of the pages and reduces the work of the web server.

    At this point, the cache system adds another set of headers, like the Age header, which tells the client how many seconds the object has been stored in the cache, and the TP-Cache or TP2-Cache headers, which are exclusive to Transparent Edge and tell the browser whether the object has been served from the first cache (TP-Cache: HIT), from the second cache (TP2-Cache: HIT), or from no cache (TP-Cache: MISS and TP2-Cache: MISS) in which case the object had to be requested from the web server.

    Finally, in the fourth step, the cache sends the content to the client, which interprets and displays it.

    After these graphs, the monthly bandwidth consumption information and requests received are displayed, providing our customers with information on their consumption. With this data, it is possible to make forecasts of future consumption for the current month, which is valuable information for all company departments.

    If you have more services contracted with Transparent Edge, you can view their history by changing the option at the top of the panel. There, you will be able to see all the consumption of each service over a period of time.

    Consumption Alerts

    At the top of the page, you will find the "Limit Alerts" button, which allows you to create a new consumption alert for your service. This alert is designed to notify you when your service's consumption exceeds a predefined threshold.

    You can customize the alert to trigger specific actions, such as:

    • Sending an email notification. Your email notifications must be activated in the notification panel to receive alerts.

    • Delivering a Slack notification.

    • Forwarding the alert data in JSON format to a specified URL.

    This feature ensures you stay informed and can take timely action to manage your service consumption effectively.

    Limit alerts widget

    Remember that everything you can do from our dashboard, you can do from our API.

    Layer 2 (Mid-Tier)

    Transparent Edge's Mid-Tier is designed to act as a funnel and minimize the number of requests that reach our clients’ origin servers. This server layer is distributed across several data centers to ensure high availability, and it is ultimately in charge of talking with the origin web servers.

    To better understand the benefits of this architecture, let’s look at an example:

    Suppose we only had one layer of 10 cache servers, all of them talking directly with the origin servers. With a smooth flow of traffic, when an object expires it will do so more or less at the same time in all the caches. So each of the 10 servers would send a request to the origin server to refresh the object.

    Now suppose we add a second cache layer comprised of two servers. This layer will talk directly with the client's servers and with Layer 1. Layer 1 will still have 10 servers and will only talk with the second layer we just added (funnel).

    Under the same circumstances of a smooth traffic flow, an object will expire on all the servers at the same time and the 10 servers will request the object from the second cache layer. This layer only will request the object from the origin twice (once per server) because it can serve the other eight requests without having to go get the object from the client’s origin servers. In this case, we are reducing the traffic at the origin by 80%.

    hit ratio
    ​
    globally
    ​
    Total: 10 simultaneous requests to the origin.

    Status Code

    A status code is an HTTP or HTTPS response code used by the server to let the client know the status of a request and whether or not it was successful.

    The RFC 2616, section 10 lists all the status codes supported by HTTP 1.1, but we are going to highlight the most relevant ones here.

    Successful response

    200 OK

    The request was successful and the server returns a 200 status code to let the client know.

    206 Partial Content

    The server is only delivering part of the content. This type of response is given to range requests when the client explicitly requests part of an object using the Content-Range header.

    Redirections

    301Moved Permanently

    This status code indicates a permanent redirection. This type of request can be cached by proxy cache and by browsers. They must be used carefully because they can cause confusion.

    302 Found

    This is used to identify a temporary redirection, so it’s never cached in proxies or browsers.

    304 Not Modified

    This indicates that the content has not been modified on the server. It is sent as a response to requests from browsers and proxies to client web servers with the If-Modified-Since header.

    Client errors

    400 Bad Request

    We see this type of error when the server can't process a request sent by the client. It’s not generally seen in browsers and is more often seen when processes or applications make their own HTTP requests. It’s usually due to a poorly formed request.

    401 Unauthorized

    Sometimes a website or part of it is protected under a username/password and this status code warns us of unauthorized access. Requests with authentication are not cached in Transparent Edge.

    403 Forbbiden

    This tells us we are entering a restricted part of the website and our access is denied, possibly for security reasons. It may be due to an IP restriction or because a prohibited action is being attempted to exploit a vulnerability of the web application. In Transparent Edge, the latter only occurs if you have the Secure Layer.

    404 Not Found

    This type of error is very common. It simply means that the web resource we are requesting cannot be found on the server.

    405 Method not Allowed

    This status code is returned when the client makes an HTTP request using a protocol not supported by the cache or server. Transparent Edge allows the following methods:

    408 Timeout

    This is a complicated error. It means that the connection has been closed due to exceeding the wait time. If the error occurs on the client server, it will become a 503 in Transparent Edge. Under normal conditions, it’s often due to a communication problem: either an internal firewall, an internal server error, or a firewall/proxy between Transparent Edge and the client. Any “connection close” or “closing connection” message in the client’s server logs could mean a 408. Historically, we’ve had problems with Apache modules that cause this error, like the mpm_itk ().

    Errores de servidor

    500 Internal Server Error

    This indicates a server error, generally with the application. For instance, it can occur when there are unclosed quotation marks in PHP.

    502 Bad Gateway

    This is a code returned by some web servers when acting as a reverse proxy and the resource behind them is not available. It’s very common with Nginx.

    503 Service Unavailable

    The service is not available. This error is returned when there’s no contact with the client’s web server, either because it’s down or due to a communication problem. It's generated “on the fly” by Transparent Edge when the client has a fatal error. When 503 error messages are received by the client, look for errors in its logs.

    504 Gateway Timeout

    This response code typically occurs when the client’s origin server is taking too long to return a non-cached object, either because it should not be cached or because it has expired.

    Transparent Edge protects you against all 5XX errors by showing you the latest cached version. You can get more information .

    Things to consider

    There are several things to keep in mind when working with a CDN in front of your web service. These are the most important ones:

    Updating content

    When you work with a CDN, be aware that there is an element in front of your website which is caching all the content you publish. If you want to update an element on the page, once you have it how you want it, you must be sure to delete the cached content from the CDN cache to make way for the new content.

    The process of deleting that content is known as invalidating, and there are several options for doing so.

    The first and easiest option is to go to the Invalidations section of our portal following an update, click the Purge URL button, and enter the URL you wish to invalidate.

    Another option is to use the API to integrate the invalidation process into the publication system. This way, your system will automatically detect when you change content and launch an invalidation through our .

    If you are using,, or, we have plugins available that are specifically geared toward integrating the CMS with Transparent Edge so you don’t have to worry about it.

    Client IP

    When you are behind our CDN, you won’t see the client IP address in the usual way. This is because Transparent Edge is making the requests to the origin servers on the client's behalf. But don't worry, all is not lost.

    To deal with this situation, Transparent Edge has created extra HTTP headers that allow us to send customers the IP address of the real user who is doing the browsing. So, even though the server is behind the cache network, the customer can still take the appropriate actions based on the real IP address. We do this with X-Forwarded-For and/or True-Client-IP headers.

    We explain it in detail.

    IPS/IDS Systems

    If you have IPS/IDS systems on your origin platform, you need to be extremely careful. Even though these systems are intended to protect your platform, they can cause problems when working behind a CDN.

    One of the many benefits of IPS systems is that they can detect when a particular IP address is accessing a resource illicitly.

    As mentioned above, when you are behind a CDN, all the requests to your origin server will come from the CDN's IP addresses. So, the IPS may think that the CDN's IP addresses are making more requests than any one IP should make and restrict them as if it were an attack.

    This is obviously a false positive that can be corrected, but it’s something to keep in mind.

    At Transparent Edge we publish our ranges through our API. If you have these types of systems, we recommend including all the Transparent Edge IP addresses on a whitelist within the IPS.

    Root domains

    With Transparent Edge—like with many other CDNs—the most common way to start running the service is by making a simple DNS change so that, for instance, the www subdomain of your website will no longer be an A record but a CNAME record that we’ll give you when you sign up.

    So far, so good. But if your website runs directly with the canonical domain—that is, without the www or any other domain (e.g.: https://mysite.com instead of htttps://www.mysite.com), you’re not done quite yet:

    • If your domain doesn’t have any MX records added to it, in theory you’ll be able to use the CNAME of the canonical domain, although not all DNS providers support this option. We repeat: This is the easiest option, but it’s not available with all DNS providers.

    • Another option would be to let us take care of the domain management within our DNS system.

    Set-Cookies and pages with basic authentication

    Web pages whose responses have the Set-Cookies or Authorization headers are cached in Transparent Edge by default.

    Log formats

    Transparent Edge makes its website logs available to customers. This can work in two different ways:

    1. (PULL): The customer can download the logs from an FTP set up for that purpose.

    2. (PUSH): Transparent Edge can send the logs every hour to an FTP that the customer makes available to us for that purpose.

    This service is not enabled by default. If you’d like to enable it, follow the instructions here.

    Log format - Web Caching Service

    • Field 1: Client IP.

    • Field 2: Remote logname. Always '-'.

    • Field 3: Username from auth basic.

    • Field 4: Date and time (UTC).

    • Field 5: HTTP Method.

    • Field 6: URL requested.

    • Field 7: Protocol.

    • Field 8: Status code.

    • Field 9: Size of the object.

    • Field 10: User-Agent.

    • Field 11: Result of the request (HIT/MISS).

    • Field 12: Content type.

    • Field 13: Cache layer that served the request (L1/L2).

    • Field 14: Response time of the request in microseconds.

    • Field 15: Client ID.

    • Field 16: Referer.

    • Field 17: Real protocol (because we undo the HTTPS in a layer prior to the cache layer, this field is necessary to identify if the original request was made via HTTP o HTTPS).

    • Field 18: Country code.

    • Field 19: Multi-purpose field. If is active and performs any action, it's shown here.

    • Field 20:

    • Field 21: Remaining TTL of the object.

    Format of WAF logs

    • Field 1: Client IP.

    • Field 2: Remote logname. Always '-'.

    • Field 3: Username from auth basic.

    • Field 4: Date and time + time difference.

    Let's start at the beginning

    Fundamentals

    What's a web cache?

    A web cache is simply a system that lets us store HTTP objects dynamically.

    A web cache can be found on the client side (web browsers) or on the server side (intermediate proxies or web servers).

    These systems significantly improve performance in terms of loading HTTP objects, reducing the load times of web pages and thus optimizing the end-user experience.

    The system works by saving local copies of the web objects requested by browsers, so that when the browser requests an object that's in the cache, it is served directly from there without needing to go back to the destination server to generate the object again, saving time.

    What is a CDN?

    A CDN is a content delivery network. In basic terms, a CDN is a system of geographically distributed caches that can serve content from the cache server nearest to any end user’s location. This reduces network latency and page load times.

    Many people think that CDNs are only used to reduce network latency and bring content closer to end users, but that’s not the case. The true potential of a CDN—and what really enables it to improve load times beyond network latency—lies in its caching techniques: serving a cached object from memory is infinitely faster than generating a web page from scratch by calling its database.

    As shown in the example, there is quite a significant time improvement. In this case, it's 3.6 times faster to serve the content from the CDN.

    Other benefits of a CDN

    In addition to the above, a CDN has many other benefits, including:

    • Optimization of resources on the origin platform. Because most traffic is cached and served from the CDN, the origin platform where the client hosts its web pages sees its traffic fall by 80-90%, reducing the number of necessary resources like servers, bandwidth, and even maintenance staff.

    • Cost savings. The resource optimization generated by the CDN results in cost savings on infrastructure, meaning that the cost of the service more than pays for itself.

    • Increased website security. The distributed nature of a CDN makes it possible to hide the origin servers from the final user, improving security. Transparent Edge also has additional security services like the.

    Transparent Rocks!

    Transparent Edge is the first and only Spanish content delivery network, with infrastructure in over 30 countries. Based on software, it’s the only CDN in the world to offer this Varnish mode with its full potential. Plus, we are a Varnish, giving our product an additional level of guarantee.

    We created our CDN in 2011 with the idea of building the CDN we would have liked to have had as clients. That’s why our main asset is the people who work at Transparent Edge, and our main value is our proximity to end users.

    The goal of this site is not to sell, but to make our clients’ lives easier. So, if you’re reading this, you already know who we are and you’re probably familiar with what makes us great. In fact, you might already be a client. In any case, on our you’ll find everything you need to know about Transparent Edge. And you can always send an email to the .

    Invalidating methods

    There are two methods for invalidating content: PURGE, which is a single invalidation that invalidates one particular object; and BAN, which is a recursive invalidation that can invalidate more than one object at a time.

    Cache Key

    A cache key is how the CDN saves an object to its cache. By default, the cache key is made up of:

    From there, we can complicate the cache key as much as we wish, adding more elements to save more versions of the same object. Let’s look at an example:

    For Transparent Edge—and in general for any other system of HTTP caches—these are distinct objects. Therefore, even if the first one is cached, it will download again to the origin when the second one is requested.

    We can use the header to modify the behavior and save more versions of the same object. For instance, with an object like this:

    And a Vary header like this:

    We can make the CDN cache save as many objects as the number of user-agents requesting them.

    This example in particular makes the efficiency of the cache decline drastically, which is why we don’t recommend having a Vary header with a user-agent or cookie value. It could be interesting, however, to have an value, value, to be able to serve different versions of an object depending on the type of device requesting the resource.

    Single or PURGE invalidations

    This kind of invalidation lets you invalidate one particular object in the cache. To do so, you must be sure to enter the full URL with all the parameters included.

    If you have modified the behavior of the cache-key with the Vary header, you typically shouldn’t have to worry. This kind of invalidation should invalidate all the existing versions of that particular object.

    One type of PURGE invalidation is known as a SOFTPURGE, which is much less aggressive.

    To do an invalidation from our, just follow this.

    Recursive or BAN invalidations

    BAN invalidations let you invalidate cache content recursively, by sending a blacklist and telling the cache to invalidate any object that matches it. For instance, we can tell it to invalidate https://www.transparentedge.eu/images/. This would invalidate any object that matches this URL, such as:

    https://www.transparentedge.eu/images/image1.png or https://www.transparentedge.eu/images/2020/02/22/index.php.

    To do an invalidation from our, just follow this.

    These invalidations are incompatible with the refetching feature.

    This kind of invalidation can be very dangerous in some cases. For instance, if you invalidated the website https://www.transparentedge.eu/ recursively, you could run into serious problems on your origin platform, as there would soon be a flood of traffic coming from all your users. Use it wisely.

    Remember that everything you can do from our you can do from our.

    DNS Pointing

    After you sign up for Transparent Edge, you’ll receive a welcome email. It will include a CNAME to complete the configuration.

    The CNAME will have the following structure:

    <SERVICIO>.<ID_CLIENTE>.edge2befaster.net

    We’re going to look at how to do the configuration using this CNAME as an example:

    caching.c4.edge2befaster.net

    This is the CNAME to point your domains at. You can also always find it in the Provisioning tab of our dashboard.

    Once you know your assigned CNAME, you just have to go to your DNS provider (normally it’s where you bought your domains) and change the record you want to pass through Transparent Edge.

    Before we continue, we’d just like to mention that this way of working, using a CNAME, is only valid for subdomains like www.yourdomain.com or blog.yourdomain.com, never to point directly at yourdomain.com without a subdomain. This limitation is imposed by the and, although there are exceptions, many DNS servers simply don’t allow it.

    Typically, you’ll want it to be the subdomain www.yourdomain.com. In this case, once you’re in your DNS provider, you’ll have to find the www record, which most likely points to an IP address with an record. Something like this:

    You’ll have to delete that record and create a new one that is a CNAME instead of an A record, pointing to caching.c4.edge2befaster.net. Such as:

    This change does not happen automatically and how long it takes primarily depends on two things:

    1. The time your DNS provider takes to apply the changes, which is usually immediate.

    2. The DNS propagation time. According to the RFC, it can take up to 24 hours to see the change, but it generally only takes a few minutes. This delay is due to the DNS architecture itself and the caching times of each domain.

    If you want to make a DNS change where the changes appear as quickly as possible, we recommend lowering your domain’s TTL as much as you can.

    Analytics

    On this page you will find more real-time information that is very valuable for your business. Unlike the historic, analytics retains data for the past 36 hours (to view older information, you can consult the historic section).

    It can be filtered according to your needs, but the previous hour filter it is applied by default. The maximum period that can be applied for filtering is six hours.

    The panel can be customized according to your needs. It displays the following options.

    You will also find the requests and bandwidth information.

    Hit ratio graphs are then displayed, which include all the cache efficiency information. The missed objects are displayed, along with the expired objects and stale objects. As a whole, depending on the settings, the entire response time of the requests can be displayed.

    The following graphs display the response codes of all the requests received by the site and the geographical location from where these requests are sent.

    The following graphics show every response code returned to the requests received and the geographical origin of this requests.

    The following graphs display the protocol being used (HTTPS or HTTP) and the source of the requests in terms of devices.

    Requests by country and the most requested URLs per site are found here.

    The next graph displays all the purges performed by clients through the panel. Next to it is the table of all the contents of each site, how many requests it receives, and how much bandwidth it consumes.

    All this is displayed in the status codes graph, and the referrer table displays the URLs from where the requests are sent.

    The IP address table shows the IPs from where the requests are sent. The content type graph, on the other hand, displays information on the contents of each site.

    Remember that everything you can do from our , you can do from our .

    Sites

    In this section, you'll be able to view/add or delete the sites managed by our CDN.

    Provisioning -> Sites

    An important notice that you can see in this section is the CNAME where you must point your sites to your DNS configuration.

    Adding a new site

    Adding a new site requires a verification of ownership of the domain being added, which is a security measure. If you have any doubts or need assistance, don't hesitate to contact our support .

    The entire verification process is explained in detail when you click on "ADD SITE".

    What is the lock icon next to my sites?

    This is our legacy method to obtain certificates, please refer to .

    I can't verify my site / I have to add a lot of sites at once

    If you have any problems adding new sites, please contact our support. We can add sites in bulk and/or bypass the verification if there are any issues: .

    Backends

    In this section, you'll be able to view/add/edit or delete backend configurations.

    Provisioning -> Backends

    A backend (or origin server) is a server identified by an IP address or DNS name. This is where your CDN will fetch your content.

    It's extremely important that all the output IPs from the CDN are able to reach the backend server, which means that any firewall or any other protection in your backend must allow for those IPs, which can be queried with this endpoint.

    The actual IP of the client visiting your site will be displayed in the True-Client-IP HTTP header.

    Remember that you don't need to create a new backend per site, and if two or more sites share that same backend then it can be shared.

    Backend configuration

    The following options are required when creating or editing a backend.

    Option
    Description

    Log shipping

    The log shipping feature is included in all service plans. It only needs to be activated and configured to start working.

    Format and frequency

    In batch mode, logs are collected, compressed, and sent every hour. Typically, one compressed log file is generated for each edge node in our delivery platform, as long as that node has processed requests for any associated site.

    Each compressed log file follows this naming pattern:

    Where:

    Total: 2 simultaneous requests to the origin.
    203.0.113.5 - - [10/Aug/2024:06:20:13 +0000] "GET http://www.transparentedge.eu/wp-content/plugins/ninja-forms/assets/fonts/fontawesome-webfont.woff2 HTTP/2.0" 200 66624 "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" hit "font/woff2" "L1" 1194 "82" "https://www.transparentedge.eu/wp-content/cache/wpo-minify/1724664512/assets/wpo-minify-footer-a97725b0.min.css" https ES "OK" "TCDN-OK:782763138" 1766
    [Host header] + [url] + [Query Stream]
    https://www.transparentcdn.com/index.html?param=1
    
    https://www.transparentcdn.com/index.html?param=2
    [email protected]
    this section of the documentation
    [email protected]

    OTT (Over The Top)

    An OTT or over-the-top is a media service offered directly to viewers via the Internet, bypassing the cable, broadcast, and satellite television platforms that traditionally control and distribute content.

    The term mainly applies to subscription-based video-on-demand services that offer film and television content.

    The URL where the healthcheck will send the request. The URL should point to a very lightweight resource that never changes, for example an empty txt file in your webserver.

    Healthcheck - Status code

    The expected status code. If the backend server answers with any other code, the backend will be marked as unhealthy and non-cached content will fail.

    Name

    A descriptive and unique name for the backend.

    IP / Origin

    The origin server IP address or DNS name.

    SSL

    True if the connection is encrypted with (HTTPS).

    Port

    Port number where the origin server is listening for http/s connections, usually 80 or 443.

    Healthcheck - Host

    The host header to send to the backend server, for example if your backend server is running Apache, it would be the ServerName or ServerAlias value, for example: www.example.com.

    Healthcheck - URL

    VPS (Virtual Private Server)

    A VPS (virtual private server) is a virtual partition of a physical server sold by a VPS provider. Each virtual server can run its own operating system and is allocated exclusive host resources. VPS clients have root access and can typically install any operating system they want.

  • Field 5: Host header.

  • Field 6: Request URL.

  • Field 7: Protocol.

  • Field 8: Status code.

  • Field 9: Size of the object.

  • Field 10: User-Agent.

  • Field 11: Content type.

  • Field 12: Layer that served the request (in this case WAF).

  • Field 13: Response time of the request.

  • Field 14: Client ID.

  • BotM
    Origin Error.
    Vary
    X-Device
    dashboard
    guide
    dashboard
    guide
    dashboard
    API
    47.62.117.136 - - [25/May/2020:15:03:22 +0000] "GET http://www.example.com/elt/ HTTP/1.0" 200 12423 "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" "text/html" "waf" 1 "179"
    https://www.transparentcdn.com/index.html?param=1
    Vary: User-Agent

    Absorption of big spikes and traffic volumes. A CDN allows you to handle large volumes of traffic and spikes that would be very difficult to manage on the origin platform.

  • Easy implementation. Implementing a CDN is as easy as making a simple change in the client’s DNS so that any website that wants to pass through the CDN no longer points to the origin web server and instead points to the CNAME provided by the CDN.

  • Transparent Secure Layer
    Varnish Enterprise
    Open Partner
    website
    sales team

    YYYYMMDDHH is the timestamp of the batch.

  • <CID> is the unique client/company ID.

  • <COUNTRY CODE> is the country associated with the edge node that served the requests.

  • <HASH> is an internal hash that identifies the edge node, used for traceability and debugging.

  • Example:

    Log shipping to an FTP / SFTP server

    This option sends logs to any FTP or SFTP server.

    To configure it, select the appropriate protocol and fill in the required connection parameters. After activation and validation, log delivery will begin within the next hour.

    Log shipping to an Amazon S3--compatible bucket

    This option sends logs to an Amazon S3 bucket or any S3-compatible service.

    To configure it, provide an access key and secret key with a policy that allows at least file uploads to the target bucket.

    The Bucket field accepts two formats:

    • <ENDPOINT URL>/<BUCKET NAME>

    • <BUCKET NAME> (for Amazon S3 buckets)

    <ENDPOINT URL> is the base URL of the S3 service. For Amazon S3, you may use only the bucket name. If including the endpoint, for example, to target a specific region, make sure the bucket name is not duplicated in the domain.

    For example:

    https://tcdn-testing.s3.us-east-1.amazonaws.com/tcdn-testing should be written as: https://s3.us-east-1.amazonaws.com/tcdn-testing. Otherwise, the bucket name will be added automatically at the start of the remote path.

    Sorting compressed log files by date and time

    The path field defines the remote folder where log files will be stored and accepts the following date-related placeholders:

    • %Y: year

    • %m: month

    • %d: day

    • %H: hour

    For example, if the path is /tcdn-logs/%Y/%m/%d and today is February 20, 2023, the logs will be stored in /tcdn-logs/2023/02/20.

    Log streaming

    Logs can also be delivered in real time. See Streaming Logs for details on configuring log streaming.

    Remember: anything you can do from the dashboard can also be done through our API.

    http://mpm-itk.sesse.net/
    here
    RFC 1912
    A
    API
    WordPress
    Magento
    Prestashop
    here
    IP
    dashboard
    API

    Content invalidation by tags

    What is invalidation by tags and how is it implemented?

    A fundamental part of a website's proper functioning has to do with controlling cached objects and how and when to invalidate them. By using tag invalidation, we tag groups of objects so that we can quickly, efficiently, and selectively invalidate them. This avoids the need to devise complex scripts to construct the set of URLs to invalidate whenever the content is updated and we want to invalidate selectively.

    At Transparent Edge, we use the Surrogate-Keys header to determine which tags are assigned to an object. When a miss occurs, which means a currently uncached object is requested, we go to the origin. For each object in the origin's response, we check for the existence of the Surrogate-Keys header and, if it exists, we assign its value as a tag to the object. If the value of the Surrogate-Keys header consists of several words separated by spaces, we assign all of them to the object, which means they can be invalidated using any of them.

    Example:

    The object will be labeled with "main" and "static1". Therefore, if we make an invalidation request for any of those two tags, we will invalidate that object and all those that include that tag. This allows us to group related objects that need to be invalidated at the same time, regardless of what URL they have.

    Each object can have multiple associated tags, if a request is made to invalidate by tag, all the objects that share that tag will be invalidated at once.

    Relationship between tags and objects

    The power and control provided by invalidating by tags is that it allows for a many-to-many relationship between tags and objects. The origin server's response can associate multiple tags with an object, and those tags can be shared by other objects, creating relationships between them.

    An example of this would be the following two requests with their backend response:

    In the example above, we have two objects (/shop and /shop/product/24656-tshirt) with three tags (shop, main-shop, and product-tshirt). Two of them (main-shop and product-tshirt) are assigned to a single object, and a third (shop) is assigned to both.

    This enables us to create associations between objects at will and invalidate them in a completely selective way.

    Generating and assigning tags

    This can be done in two ways:

    • From the origin server (recommended).

    • From the CDN using VCL code.

    From the origin server

    It must be implemented directly in the application or in the webserver that serves the content from the origin.

    An example if the origin server is using Nginx would be:

    This will tag all the objects with the extension css, js, png or gif under the path /content/ with the tags statics and content.

    From VCL configuration

    We need to incorporate the tags into the subroutine vcl_backend_response.

    The above example will add the tag images to all the resources with the extension jpg, jpeg, png or gif.

    The space after the tag plus the addition of the header Surrogate-Keys:

    is recommended. if the origin sends additional tags in the Surrogate-Keys header they will not work without it.​

    Purge/invalidate objects using tags

    Purging via panel (dashboard)

    Login into our and go to:

    Invalidation -> Purge -> Purge TAGs

    Enter the tags that you want to purge and click "Purge TAGs".

    Purging via API

    You'll need to make an authenticated POST request to /v1/companies/<company_id>/tag_invalidate/

    The body of the request must have the key "tags", for example:

    With , you can do it like this:

    Configuration

    Our dashboard provides two configuration methods. The first one, Easy Setup, is a simple rule engine that allows you to configure the system without dealing with VCL code. The second option gives you the ability to write your VCL code, enabling a more detailed customization of the system’s behavior.

    Easy Setup

    The Easy Setup is based on 'if-then' conditional logic. When the conditions of a defined rule are met, a specific action is applied. This system allows you to configure key actions on your sites in a simple and agile way with just a couple of clicks.

    To create a new rule, we must select the site where our configuration will be implemented.Once selected, click the 'Add Rule' button, which will open a modal displaying the rule templates grouped by category.

    In 'Cache & Performance' we can find:

    • Bypass cache: Select the pages where requests skip the cache and go straight to the origin server.

    • Cache time for CDN: Specify the TTL for the request.

    • No cache: Disable caching for requests.

    In Headers & Response we can see:

    • Add header to the response: Add a custom header to the HTTP response before it is sent to the user.

    • Header rewrite: Rewrite any response header before inserting in the cache.

    • Unset header: Unset an origin header.

    In Routing & Redirects are:

    • Assing backend: Assign each site to its corresponding backend for precise and controlled routing.

    • Permanent redirect (301): Set up a permanent redirect for your website.

    • Temporary redirect (302): Set up a temporary redirect for your website.

    • Redirect: Redirects users to another page.

    In Security & Access Control we have:

    • Request blocking: Block the selected request with an error code.

    • Add exception to the WAF: A configuration that allows the WAF to bypass specific rules, preventing the blocking of allowed requests or behaviors.

    • Rate limit: a mechanism that restricts the number of requests a client can make to a server within a given time period.

    With the template already selected, we will choose whether the rule will apply to all inbound requests or, alternatively, if we want to define it for a custom filter rule. In the latter case, we must fill in the required values. Once everything is completed, we save, and our new rule will be implemented.

    From the rules table, we can edit, delete, and deactivate the rules that have already been created.

    Write your VCL code

    Our CDN uses a modified version of the Varnish Configuration Language (VCL), a powerful language that will enable you to customize your site behavior.

    A table will be displayed with the history of all configurations.

    The current and active configuration is the one marked with a green tick under the "Status" header. You can see when that configuration took effect under "Deployment date".

    You can perform the following actions on any of the configurations:

    • View - Opens a read-only view of the configuration, where you can check the code and compare with other configurations.

    • Duplicate - Opens an editor to deploy a new configuration prefilled with the code of this particular configuration.

    • Back to production - A quick way to deploy an older configuration again, it's a "rollback" button.

    Deploying a new configuration

    To deploy a new configuration, click on the "ADD VCL CONFIG" button or, if you want to edit over an older configuration, use the "Duplicate" button instead.

    An editor will be displayed where you can edit the VCL code or you can copy it to your favorite editor and paste it later.

    The editor embeds some autocompletion that can be activated using the CTRL key.

    When you're done editing the configuration, click on "Save". The configuration will be checked for syntax errors and, if any are present, an error will be shown. For example, here we tried to use req.http in the vcl_backend_response subroutine which only accepts bereq.http and beresp.http:

    Otherwise, if the code is correct. the deployment will be queued and a clock will be displayed in the status of that configuration. Deployments usually take between 2 and 7 minutes to fully propagate.

    Remember that everything that you can do on our dashboard is available on our .

    Initial steps

    After activating our user account, you will be able to access the Transparent Edge panel through the URL using your username (registered email) and password defined during the registration process.

    Configuring the Backend

    The backend must first be defined. +This is the external server (host) where the website that we are configuring on the auto-provisioning platform is currently hosted. At CDN level, the backend is your origin.

    The following data are required for the correct configuration of the backend:

    Cache key

    A cache key is how the CDN saves an object to its cache. By default, the cache key is made up of:

    From there, we can complicate the cache key as much as we wish, adding more elements to save more versions of the same object. Let’s look at an example:

    For Transparent Edge—and generally, for any other system of HTTP caches—these are distinct objects. Therefore, even if the first one is cached, it will download again to the origin when the second one is requested because in the CDN cache they are distinct objects.

    We can use the header to modify the behavior and save more versions of the same object, as previously mentioned. For instance, with an object like this:

    And a Vary header like this:

    We can make the CDN cache save as many objects as the number of user-agents requesting them.

    In the previous example, the cache would save one object for each distinct user-agent (there are many). This would render the cache system ineffective. That’s why we don’t recommend having a Vary header with a user-agent or cookie value. It could be interesting, however, to have an X-Device value, to be able to serve different versions of an object depending on the type of device requesting the resource.

    # Request goes to origin server 
    curl  --tlsv1.3 -s -o /dev/null -w "%{time_total}\n" -H "User-Agent: Chrome" https://www.transparentcdn.com/?p=random
    0,596708
    
    # Request is serve from CDN server
    curl  --tlsv1.3 -s -o /dev/null -w "%{time_total}\n" -H "User-Agent: Chrome" https://www.transparentcdn.com/
    0,167391
    <YYYYMMDDHH>-<CID>-<COUNTRY CODE>-<HASH>.log.gz
    2023022010-4-spain-c7658c0dd514f6523f7a98ddd0dbb448.log.gz
    GET
    POST
    PUT
    DELETE
    OPTIONS
    PROPFIND
    PUSH
    HEAD
    www.tudominio.com	    A	    1.1.1.1
    www.tudominio.com    CNAME    caching.c4.edge2befaster.net 

    Redirect HTTPS: Redirect HTTP to HTTPS depending on the host name.

    API
    Diego Suarez

    TCP (Transmission Control Protocol)

    The TCP (Transmission Control Protocol) is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation and complements the Internet Protocol (IP). Together they form the TCP/IP model.

    dashboard
    URL
    [Host header] + [url] + [Query Stream]
    https://www.transparentedge.eu/index.html?param=1
    ​
    https://www.transparentedge.eu/index.html?param=2
    https://www.transparentedge.eu/index.html?param=1
    Vary: User-Agent
    Vary
    # request
    GET /portada.html HTTP/1.1
    Host: www.example.com
    
    # response
    HTTP/1.1 200 OK
    Surrogate-Keys: main statics1
    Content-Type: text/html
    ...
    GET /shop/ HTTP/1.1
    Host: www.example.com
    
    HTTP/1.1 200 OK Content-Type: text/html
    Content-Length: 875
    Surrogate-Keys: shop main-shop
    GET /shop/product/24656-tshirt HTTP/1.1
    Host: www.example.com
    
    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 4123
    Surrogate-Keys: shop product-tshirt
      location ~* ^/content/.*\.(css|js|png|gif)$ {
          add_header Surrogate-Keys "statics content";
    sub vcl_backend_response {
        if (bereq.url ~ "\.(jpg|jpeg|png|gif)($|\?)"){  
           set beresp.http.Surrogate-Keys = "images " + beresp.http.Surrogate-Keys;
        }
    }
    "images " + beresp.http.Surrogate-Keys;
    // tags.json
    {
        "tags": [
            "main",
            "rss"
        ]
    }
    $ curl -kv --request POST --data @tags.json \
     -H "Authorization: Bearer <API_TOKEN>" \
     -H "Content-Type: application/json" \
     "https://api.transparentcdn.com/v1/companies/512/tag_invalidate/"

    Name:

    You must provide a descriptive name for the backend.

    This name will be used in the different VCL (Varnish Configuration Language) configurations indicated later. It is preceded by the prefix c[company_id]_, where [company_id] is your unique user identifier in the Transparent Edge Services auto-provisioning platform.

    For example, a backend name could be: cNNN_example.

    Source IP

    This is the public IP of the external server where the website is currently hosted.

    If you have a domain name for that server, it can also be used instead of its IP. The only restriction is that the domain name for the origin cannot be the same as the one used later in the website configuration.

    For example, an origin domain name could be: source.example.com.

    SSL Encryption

    This checkbox is ticked to indicate that communications with the backend must be encrypted.

    Port

    This complements the previously established origin IP or domain name.

    It is the port through which the connection to the origin will be established.

    Generally, if the connection is unencrypted, the HTTP (Hypertext Transfer Protocol) will be used, the standard port of which is 80. However, if an encrypted connection is required, HTTPS (HTTP Secure) will be required, the standard port of which is 443.

    Health check

    A health check must be configured to monitor the backend status. The following variables are required for this purpose:

    Host

    Header of the host associated with the health check.

    This is an optional field, so it can be left blank or it can contain any value accepted by the origin server.

    For example, a valid associated host header could be: health_check.example.com.

    Verification URL

    This is the URL that the health check will verify.

    For example, a valid verification URL could be: /verify.

    Status code

    Expected status code for the health check verification.

    For example, a status code for the health check verification could be 200; this is the most common (status code: OK), although there is no restriction on this. For instance, a response code 301 (status code: MOVED PERMANENTLY) is also possible.

    Domain Registration

    After completing the data related with the backend configuration, the website to be associated with that backend must be registered. This is done in the next step by clicking on "Add site".

    Let's see this with an example domain: www.example.com.

    To ensure the indicated website belongs to us, we will be asked to place a file named tcdn.txt in the root directory of the website with a specific content (the verification code), so that a request of the type http://www.example.es/tcdn.txt returns the text previously provided.

    Alternatively, we can create a TXT record with the name "_tcdn_challenge" and the verification code content.

    If you encounter any problems or doubts in this regard, you can contact Transparent Edge via email at [email protected].

    VCLs

    Once the information regarding both the backend and the domain (site) has been completed in the configuration wizard, an excerpt with the generated VCL (Varnish Configuration Language) configuration will be displayed.

    VCL (Varnish Configuration Language) is simply a script language used to configure and add logic to the Varnish cache.

    For example, the backend and site values previously referred to would result in the following VCL configuration:

    As can be seen, this is just an initial configuration that links the backend cNNN_example with the site www.example.es. This link can also be made through Easy Setup in a simpler way. This allows the CDN to retrieve non-cached resources (MISS).

    You can end the wizard here and complete the VCL configuration later.

    Summary

    Finally, the configuration wizard will inform you of the modifications you will need to make in the DNS settings to point to the domain previously indicated in the CNAME (Canonical NAME) record of Transparent Edge.

    For example, our assigned CNAME record would be: caching.cNNN.edge2befaster.net.

    You can find this CNAME record in both the activation email and at the top of the Auto-provisioning panel.

    Remember that every single task you can do from our dashboard can also be accomplished from our API.

    https://dashboard.transparentcdn.com/

    Backend Analytics

    Backend Analytics

    If you have advanced analytics enabled, you can find here a comprehensive set of statistics about the relationship between the CDN and your backend.

    As with the other Transparent Edge panels, you can narrow your search by dates (and times) and, of course, filter while browsing the information or before viewing it.

    Likewise, you can customize the widgets according to your needs, adding more or replacing the less frequently used ones with others that are more useful for your business. You can arrange the widgets according to your preferences: click and drag!

    Response times

    All this information makes it possible to detect issues related to bottlenecks and potential latencies in the content delivery chain, as it provides specific data on processing times at various stages of the CDN’s handling in relation to your backend:

    1. Time Start

      • It is the moment when the CDN node begins processing the request.

      • It marks the starting point for measuring all subsequent times. Ideally, it tends to zero.

    2. Response Time

    1. Time Fetch

      • It refers to the time the CDN node takes to retrieve the content from the backend. This covers the period from when the request is sent until the complete response begins to be received.

      • It is a component within the Response Time, closely tied to the time the backend takes to process and respond to the request.

    2. Time Beresp (backend response)

    1. Time Error

      • This time relates to error handling. It may represent the interval during which an error in communication is detected and managed (for example, when the connection to the backend fails or another error occurs during processing).

      • Although it is not part of the “ideal” flow of a successful request, it is crucial for diagnosing bottlenecks or failures in the process. It differs from the previous times because it is activated in exceptional situations and helps isolate issues in communication or processing.

    Vary headers

    The HTTP header Vary indicates which header fields should be considered variable when a file is requested from the cache, and it helps servers determine how to match the headers of future requests to decide whether a cached response can be used instead of requesting a new one from the origin server. This header is useful for delivering content optimized for different devices or user agents, ensuring that users access the correct version of a web page for their device. However, if the Vary header is not configured correctly, it can reduce the benefits of the caching system and lead to excessive resource usage.

    X-vary-tcdn is a header that Transparent Edge includes by default in Vary (hidden) and is used to create cache variants without needing to manipulate the standard Vary header.

    With this information, you will be able to compare and track the behavior of these headers.

    Information concerning the Backend

    These two widgets refer directly to the backend. They provide information on requests to the origins, whether from instances that listen and serve or from virtual hosts.

    Cache Control

    Here we can visually observe how many requests (and their consumed bandwidth) belong to the different cache-setting parameters, including non-cached items.

    ASN & Referer

    From which network (ASN) has your traffic originated, and with what volume of requests and bandwidth? Would you like to know how many requests and how much bandwidth a request with a specific referer has consumed?

    
    sub vcl_recv {
        if (req.http.host == "www.example.es") {
            set req.backend_hint = cNNN_ejemplo.backend();
        }
    }

    It is the total time elapsed from when the CDN nodes send the request to the origin until the origin finishes sending the response back to the CDN node.

  • It is composed of the sum of several intermediate times, such as connection, fetching data from the backend, and internal processing (including TTFB and others).

  • Time to First Byte (TTFB)

    • It measures the time span from the start of the request until the arrival of the first byte of the response.

    • It is a critical part of the Response Time, as it reflects the initial latency by combining the connection time and the backend’s delay in starting to respond.

  • Time Connected

    • It indicates the time it takes to establish the connection with the backend.

    • It is the phase preceding the actual backend request, and its duration influences both the TTFB and the total response time.

  • It is related to the backend response and may include the time to receive the headers or the complete response (header and the initial part of the body).

  • It overlaps with Time Fetch, as both measure aspects of the interaction with the backend, although Beresp may be more focused on the actual response.

  • Time BerespBody

    • It specifically measures the time taken to receive the body of the response from the backend, once the headers have already been received.

    • It is a subdivision of the backend’s response time; while Beresp may include the overall response, BerespBody focuses on the complete transfer of the content.

  • Time process

    • It represents the total time the CDN node dedicates to processing the request internally. This includes evaluating the request, interacting with the cache, connecting to the backend, and any additional logic applied before sending the response.

    • It encompasses all processing stages within the CDN node, directly impacting the final Response Time.

  • Date/time filter
    Edit
    Edit

    Prefetching Cache

    The prefetching cache function enables you to request content to be loaded to all edge node caches automatically, and it "warms up" the cache with the requested URLs.

    Our dashboard allows you to prefetch for a given resource, i.e., you cache the content on your nodes so that it is immediately available to your clients without having to make the request to the source.

    From our dashboard

    Log in to our dashboard and go to:

    Prefetching cache -> New prefetch

    Enter the list of URLs you want to prefetch and click on "Prefetch".

    Using our API

    Create a POST request to

    /v1/companies/{company_id}/prefetch/

    The body must contain a key named "urls", for example:

    In case of doubts, please reference our .

    {
      "urls": [
        "https://www.example.com/image.jpg",
        "https://www.example.com/style.css"
      ]
    }
    API documentation

    HTTP Redirects

    Redirect to HTTPS

    When your website runs with SSL, it’s typical to want everything that comes in unencrypted via HTTP to be sent to the secure version to make sure nobody is browsing your website insecurely. To do so, you just have to call redirect_https.

     sub vcl_recv {  
         if (req.http.host == "www.transparentcdn.com") {
             call redirect_https;
         }
    }

    Redirects 301 and 302

    Redirects can be performed by calling the function `redirect_request`, see .

    It’s important to understand the implications of the two types of redirects. A 301 is a redirect that, in theory, isn’t going to change, so it gets cached in browsers. If it does eventually change, it’s very complicated to un-cache that resource.

    A 302, meanwhile, is a temporary redirect for a resource, so it’s not cached in browsers or intermediate proxies.

    sub vcl_recv {
        # 301
        if (req.http.host == "example.com" && req.url ~ "^/old-section") {
            # req.http.tcdn-location header is required for this call to work.
            set req.http.tcdn-location = "301, https://www.example.com/new-section/";
            call redirect_request;
        }
    
        # 302
        if (req.http.host == "example.com" && req.url == "/") {
            set req.http.tcdn-location = "302, https://www.example.com/es/";
            call redirect_request;
        }
    }
    callable functions
    Edit
    Edit