-
Notifications
You must be signed in to change notification settings - Fork 29.9k
Description
Bug report
Describe the bug
When requesting /_next/image(.*), I'm getting this Response header:
Cache-Control: public, max-age=60
And it's fine... What's not fine is that I'm getting the same exact Response headers even when I use custom headers in next.config.js, i.e.:
module.exports = {
async headers() {
return [
{
// This works, and returns appropriate Response headers:
source: '/(.*).jpg',
headers: [
{
key: 'Cache-Control',
value:
'public, max-age=180, s-maxage=180, stale-while-revalidate=180',
},
],
},
{
// This doesn't work for 'Cache-Control' key (works for others though):
source: '/_next/image(.*)',
headers: [
{
key: 'Cache-Control',
// Instead of this value:
value: 'public, max-age=180, s-maxage=180, stale-while-revalidate=180',
// Cache-Control response header is `public, max-age=60` in production
// and `public, max-age=0, must-revalidate` in development
},
],
},
]
},
}To Reproduce
Try this next.config.js above, with an image that uses common <img> tag like this:
<img src="/YOUR_IMAGE_IN_PUBLIC_FOLDER.jpg">And another tag that uses the new next/image component, with the same or whatever image url, for example:
<Image src="/YOUR_IMAGE_IN_PUBLIC_FOLDER.jpg">And try requesting those images in the browser, and look into Devtools -> Network tab, the Response headers, and see that for common <img> tag it's actually changed, whereas for new <Image> component it is not.
Expected behavior
For /_next/image(.*) urls, I expected to see Headers that I setup, i.e. Cache-Control: public, max-age=180, s-maxage=180, stale-while-revalidate=180.
Screenshots
Common <img>:
New <Image>:
System information
- OS: not applicable / any
- Browser (if applies): not applicable / any
- Version of Next.js: 10.0.3
- Version of Node.js: 12.18.0
- Deployment: both
next starton development machine, and actual Vercel deployment (screenshots demonstrate the case with local machine, but I've confirmed that the same is happening on a Vercel deployment)
Additional context
Originally I created an issue using "Feature request" template, and it got translated into "Idea discussion": #19896 (how to delete/close it pls? doesn't seem to be possible), - initially I wasn't sure if it's even possible to setup custom headers, and how that supposed to work, though I just needed that functionality. But later, upon discovering that there's such a functionality already, I figured out that actually /_next/image overrides both custom headers in next.config.js and headers property of Vercel config, i.e. it's not just some idea of a feature that is "not implemented", but it's actual bug.

