Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(cachecontrol): add second target argument to cacheControl #5226

Merged
merged 1 commit into from
Sep 27, 2023

Conversation

maiieul
Copy link
Contributor

@maiieul maiieul commented Sep 27, 2023

Add second target argument to cacheControl for backwards compatibility.

Fix #5192

Overview

What is it?

  • Feature / enhancement
  • Bug
  • Docs / tests / types / typos

Description

Added a second target parameter to cacheControl to fix #5192.

Ex:

cacheControl({
  maxAge: 5,
  staleWhileRevalidate: 60 * 60 * 24 * 365,
}, "CDN-Cache-Control");

The API shouldn't change much, so I simply added a second parameter instead of converting it to something like

cacheControl({
  options: {
    maxAge: 5,
    staleWhileRevalidate: 60 * 60 * 24 * 365,
  },
  target: "CDN-Cache-Control",
});

This way it is backward compatible and reduces boilerplate as setting the second target argument is probably usually an edge case.

I added the most common values to the CacheControlTarget type for autocomplete.

Use cases and why

It's not really a bug fix, but it felt buggy to see Vercel Edge strip "stale-while-revalidate" from my "Cache-Control" headers (see #5192). So this needed documentation and I thought that improving cacheControl was necessary to allow users to keep using this convenience method even for that situation.

Use cases:

  1. Ability to set stale-while-revalidate or s-maxage on the Browser with Vercel Edge, allowing the browser to serve the response from its cache while fetching another in the background.
  2. Ability to set different cache controls on the browser and on the CDN

Checklist:

  • My code follows the developer guidelines of this project
  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation
  • Added new tests to cover the fix / functionality

Add second `target` argument to cacheControl for backwards compatibility.

Fix QwikDev#5192
@netlify
Copy link

netlify bot commented Sep 27, 2023

👷 Deploy request for qwik-insights pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit b08d8b5

@maiieul
Copy link
Contributor Author

maiieul commented Sep 27, 2023

Forgot to mention one thing:

CacheControlOptions was not exported by request-handler/index.ts, so I didn't export CacheControlTarget type.

@gioboa gioboa added COMP: qwik-city STATUS-2: PR waiting for review This PR is waiting for review and approval before merge labels Sep 27, 2023
@mhevery
Copy link
Contributor

mhevery commented Sep 27, 2023

Thank you for you contribution! This 🎸 !

@mhevery mhevery enabled auto-merge (squash) September 27, 2023 18:52
@mhevery mhevery merged commit 138171f into QwikDev:main Sep 27, 2023
20 checks passed
kodiakhq bot pushed a commit to ascorbic/unpic-img that referenced this pull request Oct 8, 2023
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@builder.io/qwik](https://qwik.builder.io/) ([source](https://togithub.com/BuilderIO/qwik)) | [`1.2.12` -> `1.2.13`](https://renovatebot.com/diffs/npm/@builder.io%2fqwik/1.2.12/1.2.13) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@builder.io%2fqwik/1.2.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@builder.io%2fqwik/1.2.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@builder.io%2fqwik/1.2.12/1.2.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@builder.io%2fqwik/1.2.12/1.2.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>BuilderIO/qwik (@&#8203;builder.io/qwik)</summary>

### [`v1.2.13`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.2.13)

[Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.2.12...v1.2.13)

#### What's Changed

-   fix(insights): wrapper style by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#5193
-   docs: fix typos by [@&#8203;igorbabko](https://togithub.com/igorbabko) in [QwikDev/qwik#5195
-   fix(qwik-auth): allow multiple set-cookie headers by [@&#8203;ulic75](https://togithub.com/ulic75) in [QwikDev/qwik#5194
-   feat(insights): return prefetch list per route by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5197
-   feat(insights): return prefetch list per route by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5198
-   chore(qwik-auth): v0.1.3 by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5201
-   feat(cli): add barrel template to `new` command by [@&#8203;dapids](https://togithub.com/dapids) in [QwikDev/qwik#5202
-   docs: add `dimension.dev` to showcase by [@&#8203;necatikcl](https://togithub.com/necatikcl) in [QwikDev/qwik#5200
-   fix(core): Added StringSerializer for strings that start with the prefixes of serializers. by [@&#8203;genki](https://togithub.com/genki) in [QwikDev/qwik#5176
-   fix(serializers): fix for serialization of an empty set or map by [@&#8203;Varixo](https://togithub.com/Varixo) in [QwikDev/qwik#5209
-   docs: add qwik-spin-delay library by [@&#8203;harshmangalam](https://togithub.com/harshmangalam) in [QwikDev/qwik#5214
-   docs(ecosystem): add qwik-image library by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#5216
-   chore: add prettier-plugin-tailwindcss to tailwind starter ([#&#8203;5217](https://togithub.com/BuilderIO/qwik/issues/5217)) by [@&#8203;nsdonato](https://togithub.com/nsdonato) in [QwikDev/qwik#5217
-   docs: Correct image size and CLS in resumable example by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5220
-   docs: fix url for useVisibleTask by [@&#8203;nsdonato](https://togithub.com/nsdonato) in [QwikDev/qwik#5223
-   feat: bootstrap integration adapter  by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5222
-   chore: update file path in next-steps.tsx by [@&#8203;Craiqser](https://togithub.com/Craiqser) in [QwikDev/qwik#5212
-   refactor: remove extraneous isElement call by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5210
-   docs: fix edit this page for deprecated features by [@&#8203;nsdonato](https://togithub.com/nsdonato) in [QwikDev/qwik#5224
-   chore: update firebase starter to contemplate dist folder by [@&#8203;nsdonato](https://togithub.com/nsdonato) in [QwikDev/qwik#5225
-   feat(cachecontrol): add second `target` argument to cacheControl by [@&#8203;maiieul](https://togithub.com/maiieul) in [QwikDev/qwik#5226
-   fix: should SSR render if accept header includes */* by [@&#8203;SamVerschueren](https://togithub.com/SamVerschueren) in [QwikDev/qwik#5234
-   docs: fix 404 links by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5236
-   docs: Add frostytools.com to pages.json by [@&#8203;n8sabes](https://togithub.com/n8sabes) in [QwikDev/qwik#5239
-   docs: fix typo by [@&#8203;the-r3aper7](https://togithub.com/the-r3aper7) in [QwikDev/qwik#5241
-   chore(contributing.md): remove unnecessary step to test against docs … by [@&#8203;maiieul](https://togithub.com/maiieul) in [QwikDev/qwik#5244
-   chore(contributing.md): added info when package linking doesn't work by [@&#8203;maiieul](https://togithub.com/maiieul) in [QwikDev/qwik#5245
-   docs: Build Showcase by [@&#8203;n8sabes](https://togithub.com/n8sabes) in [QwikDev/qwik#5242
-   docs: documentation link and text for directory-based routing by [@&#8203;ryo-manba](https://togithub.com/ryo-manba) in [QwikDev/qwik#5246
-   feat(labs): Add json debugging tool by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5259
-   feat(core): Allow useContext in same elem as provider by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5258
-   docs(routing): add Link prefetch documentation (alternative) by [@&#8203;maiieul](https://togithub.com/maiieul) in [QwikDev/qwik#5248
-   docs(labs): document devtools/json by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5260
-   fix(starter): localize configuration by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#5262
-   docs: fix typos by [@&#8203;igorbabko](https://togithub.com/igorbabko) in [QwikDev/qwik#5265
-   docs(integrations): add valibot to modular forms guide by [@&#8203;fabian-hiller](https://togithub.com/fabian-hiller) in [QwikDev/qwik#5252
-   docs: Update SSG documentation to run build instead of preview by [@&#8203;ibousfiha](https://togithub.com/ibousfiha) in [QwikDev/qwik#5269
-   fix(starter): localize container attribute by [@&#8203;tzdesign](https://togithub.com/tzdesign) in [QwikDev/qwik#5268
-   fix: A bug fix [#&#8203;5104](https://togithub.com/BuilderIO/qwik/issues/5104) by [@&#8203;Charlygraphy23](https://togithub.com/Charlygraphy23) in [QwikDev/qwik#5267
-   docs(state): Add 'key' prop to list items by [@&#8203;nicvazquez](https://togithub.com/nicvazquez) in [QwikDev/qwik#5250
-   docs: add note about `onRequest` middleware exported from `serverAuth$` by [@&#8203;jakovljevic-mladen](https://togithub.com/jakovljevic-mladen) in [QwikDev/qwik#5264
-   docs(labs): update path for devtools to include https by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5271
-   docs: updated phrasing for clarity by [@&#8203;bodhicodes](https://togithub.com/bodhicodes) in [QwikDev/qwik#5273
-   fix: Bun adapter polyfill and redirect fix by [@&#8203;EamonHeffernan](https://togithub.com/EamonHeffernan) in [QwikDev/qwik#5272
-   fix: Pr local dev docker by [@&#8203;SauravChanda](https://togithub.com/SauravChanda) in [QwikDev/qwik#5237
-   refactor(core): remove useContextBoundary by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5274
-   fix: shell script update in README file by [@&#8203;harshmangalam](https://togithub.com/harshmangalam) in [QwikDev/qwik#5275
-   docs: improve advanced routing documentation by [@&#8203;jakovljevic-mladen](https://togithub.com/jakovljevic-mladen) in [QwikDev/qwik#5276
-   chore: 1.2.13 by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5277

#### New Contributors

-   [@&#8203;igorbabko](https://togithub.com/igorbabko) made their first contribution in [QwikDev/qwik#5195
-   [@&#8203;dapids](https://togithub.com/dapids) made their first contribution in [QwikDev/qwik#5202
-   [@&#8203;maiieul](https://togithub.com/maiieul) made their first contribution in [QwikDev/qwik#5226
-   [@&#8203;SamVerschueren](https://togithub.com/SamVerschueren) made their first contribution in [QwikDev/qwik#5234
-   [@&#8203;ryo-manba](https://togithub.com/ryo-manba) made their first contribution in [QwikDev/qwik#5246
-   [@&#8203;ibousfiha](https://togithub.com/ibousfiha) made their first contribution in [QwikDev/qwik#5269
-   [@&#8203;Charlygraphy23](https://togithub.com/Charlygraphy23) made their first contribution in [QwikDev/qwik#5267
-   [@&#8203;nicvazquez](https://togithub.com/nicvazquez) made their first contribution in [QwikDev/qwik#5250
-   [@&#8203;bodhicodes](https://togithub.com/bodhicodes) made their first contribution in [QwikDev/qwik#5273
-   [@&#8203;SauravChanda](https://togithub.com/SauravChanda) made their first contribution in [QwikDev/qwik#5237

**Full Changelog**: QwikDev/qwik@v1.2.12...v1.2.13

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 9pm on sunday" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/ascorbic/unpic-img).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4wLjMiLCJ1cGRhdGVkSW5WZXIiOiIzNy4wLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
COMP: qwik-city STATUS-2: PR waiting for review This PR is waiting for review and approval before merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[🐞] CacheControl s-maxage and stale-while-revalidate not applied on vercel edge
3 participants