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
A hand-written preload header can make the browser download each logo twice when the URL in the header differs from the URL the page requests. In a case Daniel Pertu described in 2026, the difference was one query parameter: Vercel’s dpl deployment id. The header listed bare logo paths, the page requested the same files with ?dpl=... appended, and the browser did not reuse the preloaded copies.
What the author observed
Pertu’s post concerns a Next.js site deployed on Vercel. His next.config.mjs adds a response Link header that preloads four above-the-fold SVG logos. In his reported cold-load Network waterfall, each bare-URL request is followed about six milliseconds later by a request to the same path carrying a ?dpl=... parameter. Each pair has identical byte counts, so the same file is transferred twice.
He reports a combined transfer size of 9,617 bytes for the four bare-URL requests on that one cold load. This is a single site and a single load, measured by the author. It is not a benchmark, and it should not be read as the typical saving for other sites.
The Console panel also showed four warnings, one per logo, stating that each preloaded resource was not used soon after the page’s load event. Pertu’s description of the duplicate rows and the warnings matches what a developer would see on a page with this mismatch.
#1 Best Overall
Why one query parameter breaks the match
Pertu’s explanation rests on how preload matching works. The browser compares URL strings. A preload hint for /logos/example.svg does not identify the same cached response as a request for /logos/example.svg?dpl=abc123, even though both point to the same file on the same server. The page’s request therefore misses the preload and fetches the file again.
Pertu’s summary of the mechanism is direct: “a preload hint is a string match against a URL, not a promise about a file.”
Rank #2
- HTML CSS Design and Build Web Sites
- Comes with secure packaging
- It can be a gift option
The dpl value is, in his account, Vercel’s deployment id, appended to static asset URLs so that a visitor does not receive a mix of files from different builds. He presents this as the platform’s explanation. The case described here concerns only that parameter. The post mentions CDNs, asset prefixes and image optimizers as systems that can also rewrite URLs, but it does not establish that they cause the same problem, so do not assume it from this case alone.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsThe mismatch comes down to two sets of URLs:
| Request source | URL form | Count on the reported cold load | Transfer reported by the author |
|---|---|---|---|
Hand-written Link response header (preload) |
Bare path, no dpl |
4 | 9,617 bytes combined |
| Page’s own image requests | Same path with ?dpl=... |
4 | Identical to the matching bare-URL request in each pair |
How to check the same pattern in your own site
Run these steps in Chrome or another Chromium-based browser against the production URL, since the deployment parameter appears only on deployed builds.
Rank #3
- Open the page, right-click, choose Inspect, and select the Network tab.
- Check Disable cache, then reload the page so that the waterfall reflects a cold load.
- Click the top document request. In the Headers tab, scroll to Response Headers and look for a
linkentry that begins withrel=preload. If it lists image paths without a query string, you have the header described here. - In the filter box, type
svgor the image extension your logos use. Look for pairs of rows with the same path, where one row has?dpl=at the end. - Open the Console tab and look for warnings that a preloaded resource was not used within a short time after the load event.
If the header is present and every preloaded path has a matching ?dpl= request, the mismatch is the likely cause. If you see no duplicate rows, the problem is probably elsewhere, and the header’s URLs may simply be correct for your build.
How to fix it
Pertu recommends removing the hand-written header. In his described setup, Next.js already emits preload links in the document for eager images, and those links use URLs that carry the deployment id. The manual header adds a second, mismatched set of preloads.
Rank #4
- Brand: Wiley
- Set of 2 Volumes
- A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers
- Open
next.config.mjsand locate theheaders()function. - Find the entry whose
sourcecovers the page and whoseheadersarray contains aLinkvalue withrel=preloadfor the logo files. - Delete that header entry. Leave unrelated headers, such as caching or security headers, in place.
- Deploy the change, then repeat the DevTools check above on the new deployment.
- Confirm that the document response no longer carries the logo
Linkheader, and that each logo appears once in the Network waterfall, with the?dpl=URL.
If the duplicate rows disappear and the four unused-preload warnings stop, the fix has worked for that page. If the logos still load twice, check whether a second preload source, such as a <link rel="preload"> tag added in application code, is using bare URLs.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11What the evidence does and does not show
- It shows that a preload is matched by URL string, and that a bare path and a
?dpl=path are treated as different requests in the author’s case. - It shows one site’s cold-load Network waterfall and Console output, as reported by Pertu in 2026.
- It does not show how much time or bandwidth the mismatch costs on typical sites, on other networks, or on other devices.
- It does not show that other frameworks, hosts or CDNs produce the same mismatch.
When this pattern is worth checking
- You maintain a preload or
Linkheader by hand in a config file while the framework also generates preloads. - Your deployment platform appends a build or version parameter to static asset URLs.
- Your Network panel shows the same file twice on a cold load, with one copy under a path that lacks a query string.
If none of these apply, a duplicate request has a different cause, and this fix will not address it.
Best Value
Pertu’s post is the source for the measurements and for the explanation of the dpl parameter. Use it as a worked example of how to read the Network and Console panels, and check the URLs on your own deployment before changing any headers.
Quick Recap
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.

