--- title: "Server-Timing (Help Center / Settings / Custom timing)" ai_context: "Use this article for generic questions about Server-Timing in RUMvision, the `Server-Timing` HTTP response header, exposing server-side performance information to the browser, and configuring Custom Performance Timing to collect that information.\n\nThis article explains the core RUMvision behaviour for Server-Timing:\n\n- `dur` values are collected as integer performance metrics that can be analysed in charts;\n- `desc` values are collected as dimensions that can be used for filtering and grouping;\n- when one Server-Timing entry contains both `dur` and `desc`, they must be configured as separate Custom Timing entries in RUMvision because metrics and dimensions are stored differently.\n\nUse this article to explain concepts such as backend timing, application processing time, database query time, CMS processing, template rendering, middleware or plugin execution, origin processing, cache context and other server-side work that is otherwise invisible to the browser.\n\nIt is also relevant for generic TTFB investigations where the user wants to understand how Server-Timing can expose what happens inside the backend, origin, CDN or application while the HTML response is being generated.\n\nExample:\n\n`Server-Timing: origin;dur=184;desc=\"MISS\"`\n\nIn this example, `dur=184` can be collected as a metric and `desc=\"MISS\"` can be collected separately as a dimension.\n\nIMPORTANT: This is the generic Server-Timing documentation. If the user mentions a specific CDN, CMS, reverse proxy, hosting platform, framework or server technology, search for a technology-specific RUMvision Server-Timing article before giving implementation instructions. Prefer the technology-specific article when one exists, because it may contain recommended fields, automatic RUMvision mappings, platform-specific configuration steps and implementation caveats that are not covered here.\n\nExamples of technologies with potentially more specific Server-Timing documentation include Cloudflare, Fastly, Akamai, AWS CloudFront, Varnish, NGINX and Shopify.\n\nIf the user provides the technology only after this generic article has already been retrieved, perform a new documentation search using the technology name together with `Server-Timing` rather than continuing from this article alone.\n\nRelevant search concepts include Server-Timing, PerformanceServerTiming, response headers, backend metrics, custom server metrics, server response time, TTFB diagnostics, backend bottlenecks, origin timing, application timing, database timing, CMS timing and server-side observability." canonical: "https://www.rumvision.com/help-center/settings/custom-performance-timing/server-timing/" --- Breadcrumbs: [Home](https://www.rumvision.com/?format=md) > [Help Center](https://www.rumvision.com/help-center/?format=md) > [Settings](https://www.rumvision.com/help-center/settings/?format=md) > [Custom timing](https://www.rumvision.com/help-center/settings/custom-performance-timing/?format=md) > Server-Timing # Server-Timing **In short:** Use the Server-Timing API to expose backend and infrastructure information to the browser. RUMvision can collect both timing values as metrics and descriptions as dimensions for filtering and grouping. RUMvision already collects the browser-observable parts of [TTFB](https://www.rumvision.com/help-center/glossary/metrics/time-to-first-byte/?format=md) and can show an [additional breakdown of server response time](https://www.rumvision.com/help-center/glossary/metrics/time-to-first-byte/?format=md#ttfb-breakdown). However, the browser cannot see what happens inside your backend, application, CMS or CDN while a response is being generated. This is where Server-Timing becomes useful. By adding Server-Timing information to your HTTP response headers, you can expose additional backend context to the browser. RUMvision can then collect this information alongside your real-user performance data. For a technical introduction to the API itself, see the [Mozilla documentation on Server-Timing](https://developer.mozilla.org/en-US/docs/Web/API/Performance_API/Server_timing). ## What you can collect Server-Timing can expose two different types of information: - `dur` for a duration; - `desc` for a descriptive value. RUMvision treats these as separate types of custom timing. A different code-example will be shown depending on which option you select. [![organisation-server-timing-description.png](https://www.rumvision.com/file/upload/img/help-center/organisation-settings/organisation-server-timing-description.png)](https://www.rumvision.com/file/upload/img/help-center/organisation-settings/organisation-server-timing-description.png) ### Duration **In short**: Collect Server-Timing duration values as metrics shown in charts. A `dur` value represents time and is collected by RUMvision as an integer metric. For example, your server could expose the time spent querying a database: ``` Server-Timing: db;dur=83 ``` RUMvision can then collect `83` as the duration of the `db` timing. This allows you to compare backend timings with metrics such as TTFB and investigate where server response time is being spent. Useful examples include: - database query time; - CMS processing time; - template rendering time; - plugin or middleware execution time; - application processing time; - CDN or origin latency. ### Description **In short**: Collect Server-Timing descriptions as dimensions for filtering and grouping A `desc` value contains descriptive information rather than a duration. RUMvision collects this as a dimension, making the value available for filtering and grouping. For example: ``` Server-Timing: cache;desc="HIT" ``` This could expose values such as `HIT` and `MISS`, allowing you to compare performance between cached and uncached responses. Other examples include: - the page template or page type used by your CMS; - cache status such as `HIT`, `MISS` or `DYNAMIC`; - the CDN point of presence that served the request; - the region or data center handling the response; - application, theme or deployment information. ## Using duration and description A single Server-Timing entry can contain both a duration and a description: ``` Server-Timing: origin;dur=184;desc="MISS" ``` In this example: - `dur=184` represents a metric; - `desc="MISS"` represents a dimension. Because metrics and dimensions are stored differently in RUMvision, **the duration and description need to be created separately as Custom Timing entries**. Create one Server-Timing custom timing for the `dur` value and another for the `desc` value when you want to collect both. This allows the duration to become available as a metric while the description becomes available as a dimension and filter. ## Example use cases Server-Timing can help expose information that would otherwise remain hidden behind the server response. For example: - A CMS can expose database time, rendering time or the number and duration of backend operations. - A caching layer can expose whether a response was a `HIT` or `MISS`. - A CDN can expose its own latency, cache status or serving location. - A hosting or observability platform can expose backend processing timings. - A platform can expose contextual information such as the active template, region or application state. This makes it possible to move beyond knowing that TTFB is slow and start investigating which backend condition or processing step is contributing to it. ### Platform-specific Server-Timing Using a CDN, reverse proxy or platform that already exposes useful timing information? We have specific implementation guides for platforms such as: - [Akamai](https://www.rumvision.com/{path}help-center/settings/server-timing/akamai{suffix}?format=md) - [AWS Cloudfront](https://www.rumvision.com/{path}help-center/settings/server-timing/aws-cloudfront{suffix}?format=md) - [Cloudflare](https://www.rumvision.com/{path}help-center/settings/server-timing/cloudflare{suffix}?format=md) - [Fastly](https://www.rumvision.com/{path}help-center/settings/server-timing/fastly{suffix}?format=md) - [NGINX](https://www.rumvision.com/{path}help-center/settings/server-timing/nginx{suffix}?format=md) - [Shopify](https://www.rumvision.com/{path}help-center/settings/server-timing/shopify{suffix}?format=md) - [Varnish](https://www.rumvision.com/{path}help-center/settings/server-timing/varnish{suffix}?format=md) These guides contain recommended fields and configuration examples for RUMvision.