Build your WordPress website with Elementor.Discover Elementor Affiliate link
Français

Site appearance

Comparisons and selections

Kinsta or o2switch for detecting a WordPress outage hidden by cache

Compare Kinsta and o2switch and distinguish a cached HTTP 200 from a 503 response produced by WordPress at the origin.

Source published: · Source updated: · Editorial policy

Read the French edition

A WordPress page can return 200 during an origin outage

Your home page opens and the external check reports HTTP 200. Meanwhile, a request reaching the WordPress application receives HTTP 503. Both observations may be correct. A page already stored in an intermediate cache can sometimes remain readable while the server that must generate new responses is unavailable. Monitoring the public page then describes what some visitors see. A second measurement is needed to know the state of origin processing.

The first case is a copy that is still fresh. A cache can return it without calling the origin. The second case occurs after freshness expires. The HTTP directive stale-if-error, when supported and allowed by the effective cache policy, permits serving an old response after certain origin errors. In both cases, visitors can receive HTTP 200 and exactly the same bytes. The mechanism producing this result differs, which can be checked by comparing request traces and response age.

The comparison examines documented ways to locate these traces at Kinsta and o2switch. The local exercise uses an origin server and simplified cache communicating over HTTP. It lets you observe the public result, origin response and end of the fallback window in a reproducible timeline. The two hosts’ actual policies must be checked for the site concerned.

Compare before you choose

The offers at a glance

Find the use case and budget that fit, then read the details to see the limitations and any components you may need.

On smaller screens, the table scrolls horizontally. With a keyboard, press Tab to focus the table, then use the left and right arrow keys.

Prices recorded for these offers. Check terms and renewal prices before you buy.
OfferBest forPricing and billingRenewal and support
Kinsta Launch, monthly billingRead the details A team analyzing the public response and application traces in MyKinsta.0 USD for the first month, 17.50 USD excluding tax per month for three months, then 35 USD excluding tax per month

Monthly billing in the cited campaign

Prices in US dollars excluding tax

35 USD excluding tax per month after the discounted months
o2switch GrowRead the details A team able to check the domain’s path and probe from cPanel.Equivalent to €7 excluding VAT/month; €84 excluding VAT paid for twelve months

Annual payment

Prices exclude VAT; tax-inclusive total depends on billing

€84 excluding VAT for annual renewal at the recorded rate

Capture the public response before touching the cache

Choose a representative public page without a user session. Note the domain, full address, time with time zone and region from which the check starts. Make a GET request and record the status, Age if present, Cache-Control and cache-layer-specific headers. Also keep a small version marker or body hash if the page supports stable comparison. In PowerShell, a request can be saved with curl.exe -sS -D entetes.txt -o page-recue.html "$url" after placing the test address in $url.

An age header helps date the copy. By itself, it does not prove that the origin was just queried or that the fallback policy is active. Provider diagnostics and logs complete the measurement. An initial response that looks old may come from the page cache, a content delivery network or an added site layer. Record evidence from each layer before purging, because a purge can remove the evidence of the outage.

If the page redirects, identify the final response and check that the public check and test measurement target the same application. For a page varying by session or language, document the variant tested. A private browser window removes some local effects while still potentially receiving a shared copy. The test must therefore retain what the response and logs reveal across the whole path.

  • Record the URL, time, HTTP status and cache headers before any purge.
  • Compare the public response’s hash or version marker with that of the expected version.

Add a measurement that actually executes the application

Choose a lightweight read-only check that passes through WordPress or the component you want to monitor. A static image or text file can respond while PHP is stopped. In an authorized test environment, use a dedicated diagnostic path or an existing application check. Check that it follows the same application, creates neither orders nor content, and can return an error when a service it depends on becomes unavailable.

Configure this path so the response is not stored, then check its handling in every active cache. Cache-Control: no-store is a standard response signal. A rule that nevertheless caches this address, or a copy saved before the change, can make the measurement misleading. Confirm passage to the origin using logs and check several reads. Adding a random parameter is insufficient if the cache ignores it or processing takes another path.

Keep both measurements during the incident. The public page reports display continuity. The application check reports what the server executes. If the page returns 200 and the check 503, correlate the time with the PHP or server log. If only the check fails, also check its own dependencies before attributing the outage to all of WordPress. A health check must remain limited and interpretable.

Kinsta Launch: compare headers with MyKinsta logs

In MyKinsta, open Sites and select the site. The documentation distinguishes the site’s page cache from edge cache. To identify the layer serving a page, Kinsta documents X-Kinsta-Cache for site cache and Ki-CF-Cache-Status with ki-cache-type for edge cache. Record values from the response actually received. A cache indicator identifies the layer and its state. To understand why the origin is inaccessible, correlate it with the log matching the test time.

In the site’s Logs tab, find the probe request and errors from the same period. Documented logs include access.log, error.log and kinsta-cache-perf.log. A line showing a cache response and another showing an application error provide complementary evidence. Edge cache relies on the response already cached at site level. During acceptance testing, therefore check the probe’s exclusion on the layers applying to the domain, using supported settings.

Kinsta says edge caching is unavailable in the standard staging environment and incompatible with password protection. The private copy can test the probe’s application behavior. To check edge headers, use the approved access and scope for the environment concerned. On the public site, observe existing responses and logs. Trigger the outage only in the local acceptance test.

o2switch Grow: find the cache actually active on the domain

In cPanel, confirm the domain concerned and the cache tool applying to it. o2switch documents enabling LiteSpeed LSCache per domain with the corresponding WordPress plugin when this workflow is chosen. LiteSpeed documentation lists X-LiteSpeed-Cache among diagnostic headers. Record it if available in your response and check whether another layer answered. Start with existing settings so the measurement matches the observed incident.

From cPanel’s metrics tools, retrieve the domain’s access log and find the test check at the recorded time. If you configured exclusion of a diagnostic URI in the cache system, check that it is actually applied. Make two consecutive reads and find both requests in the log proving their passage to the application. A cache or web-server trace may need to be supplemented with a private application log.

The LSCache activation procedure described by o2switch has restrictions for subdomains. A test subdomain may therefore follow a different path from the main domain. Use this copy to check the probe and its dependencies, then record production-domain behavior without changing configuration during collection. If testing introduced a temporary exclusion, remove it after validation and check the affected path’s state.

Plans and terms checked on November 11, 2026

The monthly Kinsta Launch price recorded on the French page is 0 USD for the first month, then 17.50 USD excluding tax per month for three months, then 35 USD excluding tax per month. The displayed campaign is restricted to new customers and ends on December 1, 2026. Twelve months following this sequence total 332.50 USD excluding tax if the rate and scope remain unchanged. Confirm taxes, first charge date and applicable amount in the summary. The offer describes one WordPress installation and 15 GB storage.

o2switch Grow is displayed at a monthly equivalent of €7 excluding VAT, or €84 excluding VAT paid for twelve months. The help page states €84 excluding VAT at the recorded rate for annual renewal. The domain is advertised as free for the first year. Record its price at the next renewal and the account’s tax-inclusive total. The listing presents eight vCPU threads and 16 GB RAM. These resources characterize the plan, while logs and probe behavior verify the origin outage.

Prices retain their original currency and schedule. o2switch’s prepaid period and Kinsta’s sequence of monthly charges must be recorded separately when comparing a budget. For this scenario, also identify who has log-reading permissions, who can check a cache exclusion and how recovery will be confirmed. These factors determine whether the team can diagnose the difference between a public 200 and an origin 503.

Measure fallback duration before concluding recovery

In the exercise, the origin response declares 10 seconds of freshness and 20 seconds of fallback after expiry. At 5 seconds, the cache is five seconds old and no new request is sent to the origin. At 15 seconds, the copy is five seconds beyond freshness. The test cache then queries the origin, receives 503 and serves the old copy. At 31 seconds, the copy is 21 seconds past its freshness period. It falls outside the simulated fallback window and the public result becomes 503.

For a real site, record the duration and rules of the layer serving the response. An Age greater than the observed freshness may be consistent with an old response, but calculation depends on effective policy, headers and intermediate layers. Look for evidence of the origin error before attributing 200 to fallback. If the copy was still fresh, the cache may have responded without detecting the outage. If your plan does not document the fallback policy, treat the reason for 200 as a hypothesis to confirm.

Keep a separate measurement for personalized or transactional paths. A cached public page can remain readable while a form, cart or login no longer works. Validate the probe’s path without triggering a real action. If the measurement confirms an outage, use the log matching the application and test time. After correcting it, check the probe and reread the public page before announcing recovery.

Check the origin’s recovery and the page actually served

When the application responds again, check that the probe receives the expected status and a response marker generated by the application. Also check that the affected user path works again in your test environment. The public page may still display the version cached before the outage. Record its age or version marker and compare it with the response the origin should now produce. This comparison distinguishes actual recovery from simple display continuity.

If a targeted purge is needed after recovery, use the one matching the identified domain, URL and layer. Repeat the public request and wait until the new content is observed, accounting for the cache’s stated application delay. During an active incident, a global purge may remove the copy still readable for some visitors. Preserve the initial record and choose the invalidation time after measuring the origin.

If you added a temporary probe or changed a rule for testing, keep the records and restore the initial configuration on the copy. Reread the affected paths after rollback. A permanent probe must remain minimal, protected if necessary and checked whenever the cache layers change. The expected result is recent evidence of application state alongside the public-page check.

  • Confirm that the application probe returns to the expected status.
  • Reread the public page and check its version after cache refresh.

Eight local checks to compare both readings

The ZIP launches two servers on loopback and advances a test clock. Initially, the cache records an HTTP 200 page. During the outage, the page receives the same bytes twice, first without calling the origin and then after a 503. The uncached check receives 503. When the fallback window ends, the public page also receives 503. After the application returns, the cache receives a different version and the probe returns to 200.

The eight checks pass from the extracted ZIP with Python 3.14.4. HTTP requests really take place between the two servers. The cache and clock belong to the exercise. Durations and the X-Recette-Cache header make test cases visible. The origin response is simulated on a local server. Plan settings are based on documentation. A record specific to your site is still needed to characterize an incident. If the probe confirms a 503 error, the related guide helps isolate its cause in WordPress or on the server.

Kinsta Launch suits a team using MyKinsta to reconcile page-cache, edge-cache and application traces. o2switch Grow suits a team already monitoring domains, their cache and logs through cPanel. For both plans, validate the same elements: a readable public page, a measurement reaching the monitored process and a recovery record. These results let you keep public 200 in monitoring without making it solely responsible for representing WordPress’s state.

  • Extract the ZIP and run python recette.py.
  • Compare readings from the cache, origin, probe and recovered page.

Further reading

Sources and references

Use these references to check the features, requirements and limitations described. Reading documentation is not a practical test.

View 11 references

Uses, prices and what to check

2 offers in detail

Compare the features you need and the terms of each offer. The order of these entries does not indicate a ranking.

Paid offer

Kinsta Launch, monthly billing

Kinsta journey. Note the public headers, examine MyKinsta caches and logs, then check the application’s status.Read cache information and logs in MyKinsta — BlogPasCher editorial illustration.Open full-size illustration ↗

Best forA team analyzing the public response and application traces in MyKinsta.

MyKinsta distinguishes site cache from edge cache and exposes access, cache and error logs. In the relevant environment, check that the probe reaches WordPress and that headers match the expected layer.

Offer pricing

0 USD for the first month, 17.50 USD excluding tax per month for three months, then 35 USD excluding tax per month

Billing: Monthly billing in the cited campaign

Renewal and support: 35 USD excluding tax per month after the discounted months

Prices in US dollars excluding tax

Checked on .

Strengths

  • Access, cache and error logs documented
  • Cache-layer identification through headers

What to consider

  • Edge cache unavailable in standard staging
  • Fallback policy to check for the site
Pricing terms and compatibility

Understanding the offer

Price at the time of review
0 USD for the first month, 17.50 USD excluding tax per month for three months, then 35 USD excluding tax per month
Currency
USD
Billing
Monthly billing in the cited campaign
Renewal and support
35 USD excluding tax per month after the discounted months
Taxes and fees
Prices in US dollars excluding tax
Commitment and terms
New customers; campaign displayed through December 1, 2026
Date checked

Compatibility and components

  • WordPress
  • MyKinsta
Read the full Kinsta profile →View official site for Kinsta Launch, monthly billing (opens in a new tab)Back to the table
Paid offer

o2switch Grow

o2switch journey. Identify the domain’s cache layer, compare the public page with the probe, then look for the origin response in the logs.Check the domain’s cache in cPanel — BlogPasCher editorial illustration.Open full-size illustration ↗

Best forA team able to check the domain’s path and probe from cPanel.

In cPanel, check the domain’s cache and compare its headers with raw access logs. The LSCache configuration described by o2switch depends on the domain and cannot be enabled on a subdomain with this tool.

Offer pricing

Equivalent to €7 excluding VAT/month; €84 excluding VAT paid for twelve months

Billing: Annual payment

Renewal and support: €84 excluding VAT for annual renewal at the recorded rate

Prices exclude VAT; tax-inclusive total depends on billing

Checked on .

Strengths

  • LSCache activation documented per domain
  • Published renewal rate

What to consider

  • LSCache tool restrictions for subdomains
  • Fallback policy to check for the domain
Pricing terms and compatibility

Understanding the offer

Price at the time of review
Equivalent to €7 excluding VAT/month; €84 excluding VAT paid for twelve months
Currency
EUR
Billing
Annual payment
Renewal and support
€84 excluding VAT for annual renewal at the recorded rate
Taxes and fees
Prices exclude VAT; tax-inclusive total depends on billing
Commitment and terms
Twelve months
Date checked

Compatibility and components

  • WordPress
  • cPanel
  • LiteSpeed LSCache depending on configuration
Read the full o2switch profile →View official site for o2switch Grow (opens in a new tab)Back to the table

English translation of the reviewed French edition. Code examples retain their original identifiers, comments and output strings for reproducibility. Linked exercise files and original screenshots may contain French. No new practical tests or price checks are implied by translation.

Continue reading in English