Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Patch Next.js and React Server Components first, then make every cache layer use a safe key and an explicit freshness policy. Cache public, identical responses with a measured s-maxage; mark cookie-, session-, authorization-, and other user-specific responses private or no-store. Make your CDN honor Vary and partition React Server Component (RSC) and middleware responses on the headers that change them. Finally, purge or version the outer CDN separately: revalidatePath() and revalidateTag() invalidate Next.js server caches, not an independent CDN copy.

What cache poisoning means in a Next.js deployment

Cache poisoning is a shared-cache partitioning failure. A request controlled by an attacker produces one variant of a response, but the CDN, reverse proxy, or other shared cache stores it under a key that is too broad. Later visitors receive that stored variant even though their requests require something different.

In Next.js, the dangerous difference can be between HTML and an RSC payload, between two middleware outcomes, or between users with different cookies or authorization headers. The request that creates the bad object may be unauthenticated; the users who receive it may be ordinary visitors.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

RSC responses served at an HTML URL

The Next.js RSC advisory describes applications that are vulnerable when shared caches do not correctly partition response variants. Under the affected conditions, an attacker can cause an RSC response to be stored against the original URL. A later clean browser then receives a component payload where it expected a complete HTML document. Symptoms can include a blank page, a hydration error, an apparently broken navigation, or response bodies that begin with RSC transport data rather than markup.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.

The temporary controls are to include the relevant RSC request headers in the CDN or reverse-proxy key and to honor the response’s Vary header. If you cannot prove that partitioning is correct, disable shared caching for the affected App Router and RSC responses until the software is patched.

Redirects cached without x-nextjs-data

A separate middleware and proxy advisory covers cached 3xx responses. If a proxy caches a redirect without varying on x-nextjs-data, one attacker request can poison the redirect stored for a path. Every later request that maps to that cache entry follows the attacker-influenced result. For affected responses, vary the cache key on x-nextjs-data, or do not share-cache the redirect.

Root catch-all pages combined with SSG or ISR

The September 2026 SSG/ISR advisory describes a version-specific issue involving a root-level catch-all page and statically generated or incrementally regenerated routes. A single crafted unauthenticated request can poison a shared response cache. Treat this as a security defect in the affected release range, not as a problem that can be solved reliably with a custom header. Check the advisory’s fixed release before relying on configuration changes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Patch before changing headers

Vercel’s coordinated May 2026 security release addressed 13 Next.js advisories, including cache poisoning in React Server Component responses. Its explicit guidance is: “Patching is the only complete mitigation, and all affected users should upgrade immediately.” Header rules are useful defense in depth and temporary containment; they do not replace an upgrade.

Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
Component Fixed release listed in the May 2026 notice How to use the information
Next.js 15.5.18 Use at least this release for the 15.5 line, subject to any later security release.
Next.js 16.2.6 Use at least this release for the 16.2 line, subject to any later security release.
React Server Components packages 19.0.6, 19.1.7, and 19.2.6 Keep the matching react-server-dom-* packages on a fixed release compatible with your Next.js version.

These numbers are the releases named in that May 2026 notice, not a permanent safe-version guarantee. Before an upgrade or incident runbook is executed, compare your lockfile with the current Next.js and React Server Components advisories; a later coordinated release can supersede them.

An earlier Pages Router advisory reported that a crafted request could make a route that should not be cached emit Cache-Control: s-maxage=1, stale-while-revalidate, allowing an upstream CDN to store it. That notice provided no official workaround and recommended upgrading to a safe version. Do not assume that adding a proxy rule fixes an unpatched Pages Router vulnerability.

Why a deployment can still serve old data

Next.js deployments commonly have several independent caches. A browser can reuse a response, Next.js can reuse its Full Route Cache or Data Cache, a platform CDN can store the rendered response, a self-hosted reverse proxy can add another copy, and an origin cache can sit behind that proxy. A deployment changes application code, but it does not necessarily delete objects already held by every layer.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Defaults that create long-lived freshness

Response type Documented cache behavior Practical consequence
Static page with no revalidation s-maxage=31536000 (31,536,000 seconds, one year) An edge can keep the generated response for up to a year unless the deployment platform purges or versions it.
ISR page s-maxage={revalidate} plus stale-while-revalidate={expire - revalidate} The edge can serve the previous response during the stale window while regeneration runs.

A long s-maxage is not automatically a bug. It is appropriate for content that is identical for every visitor and changes rarely. It becomes a production incident when editors expect an immediate update, or when a response contains data that differs by user.

Rank #3
Sale
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black | LED mouse pad with 14 lighting modes, covers keyboard & mouse, anti-slip rubber base, waterproof surface, USB powered
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.

On-demand revalidation stops at the Next.js cache

revalidateTag() and revalidatePath() invalidate Next.js server-side data or route entries. They do not, by themselves, purge an independently operated CDN cache. The Next.js CDN guidance states that “CDN-level caching alone does not support on-demand revalidation (revalidateTag() / revalidatePath()).” If the CDN still has a fresh object, it can serve that object after the Next.js cache has been invalidated.

To make an edit visible, your deployment sequence must therefore include the outer cache: call the provider’s purge API, use a deployment-specific URL or cache version, or wait for the documented TTL. Record the observed purge latency rather than assuming it is instantaneous.

stale-while-revalidate is an intentional trade-off

After s-maxage expires, a CDN may serve the stale response while it asynchronously calls the origin for a replacement. This reduces latency and protects an expensive function from a thundering herd, but it means “the data changed” and “every visitor sees the new data” are different guarantees. Set the stale window only when that delay is acceptable to the product.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose a cache policy for each route

Classify a route by the response body and headers it can produce, not by whether the page looks public in a browser. A route that reads a cookie, session, authorization header, geolocation, experiment assignment, or account record is not identical for all visitors.

Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
Route class Recommended response policy Use when
Public, server-rendered, identical for everyone Cache-Control: max-age=0, s-maxage=86400 The edge may reuse the response for one day while browsers revalidate.
Semi-static public content Cache-Control: max-age=120, s-maxage=86400 A two-minute browser freshness window and one-day shared-cache window are acceptable.
Personalized or per-user response Cache-Control: private, max-age=0 The body is user-specific but can be retained briefly in that user’s browser.
Sensitive or real-time response Cache-Control: no-store Passwords, payment details, private account data, rapidly changing state, or any response that must not be retained.
Content-hashed JavaScript, CSS, or fonts Cache-Control: max-age=31536000, immutable The filename changes whenever the bytes change; never apply this policy to HTML or user-specific data.

max-age controls a browser’s reuse period; s-maxage controls shared caches. Setting only one can produce a different experience for the browser and the edge. A response that is safe to share must also have a cache key that represents every input that changes its body or status.

Make RSC, middleware, and redirects partition correctly

RSC and redirect responses are not interchangeable with ordinary HTML. The request headers used by the Next.js client can select a different representation, so a cache that keys only on the URL is unsafe.

  • Configure the CDN or reverse proxy to honor the origin’s Vary response header rather than stripping or rewriting it.
  • For affected RSC responses, include every relevant RSC request header named by the current Next.js advisory in the cache key.
  • For middleware or proxy redirects covered by the advisory, include x-nextjs-data in the key or disable shared caching for those 3xx responses.
  • Do not cache a response merely because its status is 200 or 3xx. Require an explicit, tested cache policy.
  • If your proxy cannot express these keys, send Cache-Control: private, no-store for the affected response class until the proxy or framework is upgraded.

Do not “fix” a poisoning risk by adding every request header to a global cache key. That can create unbounded fragmentation, low hit rates, and accidental storage of sensitive variants. Partition only on headers that genuinely select the representation, and keep authenticated traffic out of a shared cache.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Deployment runbook for a safe Next.js cache

  1. Record versions. Capture the deployed Next.js version and every react-server-dom-* package version from the lockfile or build artifact. Compare them with current security advisories before changing cache configuration.
  2. Inventory every layer. List browser caching, the Next.js Full Route and Data Caches, the hosting CDN, any reverse proxy, and any origin or object cache. For each layer, document its key, TTL, stale behavior, and purge mechanism.
  3. Classify routes. Mark each route public-identical, semi-static, personalized, authenticated, or sensitive. Record whether it reads cookies, authorization, session state, headers, or request-specific data.
  4. Protect private routes first. Before a route reads per-user input, emit Cache-Control: private, max-age=0 or no-store. Ensure the CDN is configured not to override that decision.
  5. Set public freshness deliberately. Choose browser max-age, shared s-maxage, and any stale-while-revalidate period from the business’s acceptable delay. Do not inherit a one-year static default accidentally.
  6. Configure representation keys. Preserve Vary; add the RSC request headers and x-nextjs-data where the relevant advisories require them. Disable sharing when the proxy cannot guarantee a safe partition.
  7. Connect invalidation systems. After revalidateTag() or revalidatePath(), invoke the outer CDN purge or publish a new cache version. Document ordering, authentication, retries, and expected propagation time.
  8. Keep immutable assets separate. Apply one-year immutable caching only to content-hashed static assets. HTML, RSC payloads, redirects, and account responses need their own policies.
  9. Test the deployed path. Repeat header and identity tests from more than one edge region after deployment and after a purge. Save the results with the release record.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Inspect headers and reproduce stale behavior

Capture headers at the public edge, not only from a local development server. A simple shell pattern is:

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
curl -sS -D - "$ORIGIN_URL/path" -o /dev/null

Run it for an HTML navigation, an RSC request, a redirect, an authenticated request, and requests carrying different cookies or authorization states. Record Cache-Control, Vary, status, age indicators, and any provider-specific cache-hit headers. The exact hit header differs by platform, so treat it as observational evidence rather than application logic.

For an on-demand invalidation test, fetch a known value, change the source data, call revalidateTag() or revalidatePath(), then fetch through the public CDN again. Compare the Next.js cache result with the edge result and record both TTL and purge latency. A changed origin response paired with an unchanged edge body proves that the outer cache was not invalidated.

Verification checklist for release and incident response

  • Confirm that deployed Next.js and React Server Components versions are fixed according to the current advisories.
  • Capture headers for HTML, RSC requests, redirects, authenticated requests, and requests with different cookies or authorization values.
  • Send an RSC request and then request the same URL as a clean browser; verify that the clean client receives HTML rather than an RSC payload.
  • Request a middleware redirect with and without x-nextjs-data; verify separate cache entries where the advisory requires them.
  • Request the same personalized URL as two users; verify that no body, cookie, status, or redirect crosses identities.
  • Trigger revalidateTag() or revalidatePath(); check both the Next.js cache and the outer CDN instead of checking only the origin.
  • Repeat tests from more than one edge region after deployment and after a purge.
  • Confirm that a self-hosted reverse proxy does not cache a response simply because it returned 200 or 3xx.

Troubleshoot the common symptoms

“The database changed, but production still shows the old page.”

Check the CDN’s Age or cache-hit indicator and its s-maxage. If the Next.js cache was invalidated but the CDN object remains fresh, purge or version that object. If stale-while-revalidate is present, wait for the documented stale window and confirm that the asynchronous revalidation reaches the correct deployment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“A hard refresh shows different content from a normal navigation.”

Compare browser cache headers with the edge headers. A browser may be reusing an HTML document while client navigation makes an RSC request, or the reverse proxy may be serving an RSC variant under an HTML key. Inspect Vary and the RSC key before changing application data fetching.

“Users occasionally see another user’s page or redirect.”

Stop shared caching for that route immediately with private or no-store, purge existing objects, and investigate every cache layer. Confirm that cookies, authorization, session state, and request-specific headers cannot enter a shared object. A longer TTL or a cache-busting query string is not a safe remedy for an identity leak.

“A fix works on one region but not another.”

Different edges can hold different objects or have different purge propagation. Compare cache keys, TTLs, and purge timestamps by region. Keep the route private while investigating any cross-user or cross-variant symptom; availability is less important than preventing another user from receiving the wrong response.

Compare deployment approaches before choosing a cache design

Decision axis Managed platform with an integrated CDN Self-hosted Next.js behind a reverse proxy
Cache-key control Often exposed through platform settings and framework conventions; verify that RSC and redirect headers are supported. Fully controlled by proxy configuration, but an unsafe default can cache every 200 or 3xx response.
Vary support Confirm that the platform preserves and enforces it. Explicitly configure preservation and test the resulting key.
On-demand purge Usually available through a provider API; measure propagation time. Must be implemented across every proxy and cache layer.
Cookies and authentication Use documented private/no-store controls; never assume the platform detects all personalization. Make bypass rules explicit for cookies, authorization, and session routes.
Stale-while-revalidate Check the platform’s exact stale and revalidation semantics. Choose and monitor the proxy’s stale behavior yourself.
Deployment isolation Verify whether old and new deployments share cache objects during rollout. Use deployment-specific origins or cache versions if old and new responses could collide.
Observability Use provider cache-hit headers, logs, and purge events. Log cache keys, bypass decisions, status, age, and upstream identity at the proxy.
Security patch speed Follow the platform’s coordinated release process but still update application dependencies. Own the complete upgrade, rebuild, rollout, and rollback process.

Operational rules that prevent regressions

  • Make cache classification part of route ownership. A new cookie or authorization check should require a cache-policy review.
  • Keep a versioned map of route patterns, headers that affect them, TTLs, stale windows, and purge commands.
  • Alert on unexpected cacheability, such as an authenticated response carrying s-maxage or a sensitive response lacking no-store.
  • Run poisoning tests in CI or staging whenever Next.js, React Server Components packages, middleware, or proxy rules change.
  • Subscribe to Next.js and React Server Components security advisories and schedule emergency upgrades; the May 2026 release demonstrates that several advisories can arrive together.
  • Keep HTML and RSC responses out of the immutable-asset rule. Only content-hashed JavaScript, CSS, and fonts are suitable for a one-year immutable policy.

The practical decision

For a public page that is identical for everyone, use a measured shared TTL, preserve Vary, and connect Next.js invalidation to the CDN purge path. For anything personalized, authenticated, sensitive, or difficult to partition safely, use private or no-store. When a poisoning advisory affects your release, upgrade first; cache-key workarounds are containment, not a complete fix.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.