Skip to content

Add endpoint for SSG cache clear #22699

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

Closed

Conversation

adrianos10
Copy link

@adrianos10 adrianos10 commented Mar 2, 2021

Hi, SSG and ISG are great features, but what is holding us from implementing them in our ecommerce solution is that we can't force refresh content of the pages after any changes are made in CMS. I was wondering if I can set up an endpoint which can handle this. Could you please verify if this approach makes any sense or am I missing something? I haven't tested dynamic routes yet but in general it seems to be working properly.

Here is an example of cURL request for this new endpoint:
curl --location --request POST 'http://localhost:3000/api/clear-ssg-cache' \ --header 'Content-Type: application/json' \ --data-raw '{ "pagesToRefresh": [ "index", "login", "nest1/nest2 ], "locales": [ "en-US", "fr", "nl-NL" ] }'

Edit: I've added support for locales.

@ijjk
Copy link
Member

ijjk commented Mar 2, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
buildDuration 12s 11.9s -72ms
nodeModulesSize 42.7 MB 42.7 MB ⚠️ +8.02 kB
Page Load Tests Overall increase ✓
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
/ failed reqs 0 0
/ total time (seconds) 2.079 2.112 ⚠️ +0.03
/ avg req/sec 1202.75 1183.84 ⚠️ -18.91
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.322 1.271 -0.05
/error-in-render avg req/sec 1890.89 1966.53 +75.64
Client Bundles (main, webpack, commons)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
677f882d2ed8..e7a0.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.65 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 59.7 kB 59.7 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
amp-e3e9bc99..932c.js gzip 536 B 536 B
hooks-5023ef..3670.js gzip 888 B 888 B
index-3a2b03..c677.js gzip 227 B 227 B
link-177412b..043e.js gzip 1.67 kB 1.67 kB
routerDirect..1a66.js gzip 303 B 303 B
withRouter-9..1b7d.js gzip 302 B 302 B
Overall change 8.66 kB 8.66 kB
Client Build Manifests
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Rendered Page Sizes
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
index.html gzip 612 B 612 B
link.html gzip 619 B 619 B
withRouter.html gzip 607 B 607 B
Overall change 1.84 kB 1.84 kB

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
buildDuration 14.2s 14.1s -115ms
nodeModulesSize 42.7 MB 42.7 MB ⚠️ +8.02 kB
Client Bundles (main, webpack, commons)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
677f882d2ed8..e7a0.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.65 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 59.7 kB 59.7 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
amp-e3e9bc99..932c.js gzip 536 B 536 B
hooks-5023ef..3670.js gzip 888 B 888 B
index-3a2b03..c677.js gzip 227 B 227 B
link-177412b..043e.js gzip 1.67 kB 1.67 kB
routerDirect..1a66.js gzip 303 B 303 B
withRouter-9..1b7d.js gzip 302 B 302 B
Overall change 8.66 kB 8.66 kB
Client Build Manifests
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_error.js 1.02 MB 1.02 MB ⚠️ +28 B
404.html 2.67 kB 2.67 kB
500.html 2.65 kB 2.65 kB
amp.amp.html 10.4 kB 10.4 kB
amp.html 1.86 kB 1.86 kB
hooks.html 1.92 kB 1.92 kB
index.js 1.02 MB 1.02 MB ⚠️ +28 B
link.js 1.08 MB 1.08 MB ⚠️ +28 B
routerDirect.js 1.07 MB 1.07 MB ⚠️ +28 B
withRouter.js 1.07 MB 1.07 MB ⚠️ +28 B
Overall change 5.27 MB 5.27 MB ⚠️ +140 B

Webpack 5 Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
buildDuration 13.8s 13.7s -117ms
nodeModulesSize 42.7 MB 42.7 MB ⚠️ +8.02 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
/ failed reqs 0 0
/ total time (seconds) 2.042 2.058 ⚠️ +0.02
/ avg req/sec 1224.24 1214.73 ⚠️ -9.51
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.304 1.344 ⚠️ +0.04
/error-in-render avg req/sec 1916.92 1859.89 ⚠️ -57.03
Client Bundles (main, webpack, commons)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
597-74632e79..1d47.js gzip 13.3 kB 13.3 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 6.6 kB 6.6 kB
webpack-HASH.js gzip 954 B 954 B
Overall change 60.1 kB 60.1 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_app-aedc815..1421.js gzip 1.26 kB 1.26 kB
_error-71ec2..1a96.js gzip 3.38 kB 3.38 kB
amp-33a09cb0..6745.js gzip 536 B 536 B
hooks-4e968a..f870.js gzip 902 B 902 B
index-5c6845..f75c.js gzip 230 B 230 B
link-99f0c6c..b84a.js gzip 1.65 kB 1.65 kB
routerDirect..bb56.js gzip 306 B 306 B
withRouter-7..2133.js gzip 302 B 302 B
Overall change 8.57 kB 8.57 kB
Client Build Manifests
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_buildManifest.js gzip 326 B 326 B
Overall change 326 B 326 B
Rendered Page Sizes
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
index.html gzip 586 B 586 B
link.html gzip 593 B 593 B
withRouter.html gzip 581 B 581 B
Overall change 1.76 kB 1.76 kB

Diffs

Diff for index.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "PkEQjGZo9jnhikTLcoQ8X",
+        "buildId": "dKtWw8S_2YXWUjJwlwnFs",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/PkEQjGZo9jnhikTLcoQ8X/_buildManifest.js"
+      src="/_next/static/dKtWw8S_2YXWUjJwlwnFs/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/PkEQjGZo9jnhikTLcoQ8X/_ssgManifest.js"
+      src="/_next/static/dKtWw8S_2YXWUjJwlwnFs/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "PkEQjGZo9jnhikTLcoQ8X",
+        "buildId": "dKtWw8S_2YXWUjJwlwnFs",
         "isFallback": false,
         "gip": true
       }
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/PkEQjGZo9jnhikTLcoQ8X/_buildManifest.js"
+      src="/_next/static/dKtWw8S_2YXWUjJwlwnFs/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/PkEQjGZo9jnhikTLcoQ8X/_ssgManifest.js"
+      src="/_next/static/dKtWw8S_2YXWUjJwlwnFs/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "PkEQjGZo9jnhikTLcoQ8X",
+        "buildId": "dKtWw8S_2YXWUjJwlwnFs",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/PkEQjGZo9jnhikTLcoQ8X/_buildManifest.js"
+      src="/_next/static/dKtWw8S_2YXWUjJwlwnFs/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/PkEQjGZo9jnhikTLcoQ8X/_ssgManifest.js"
+      src="/_next/static/dKtWw8S_2YXWUjJwlwnFs/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: 6573be4

@ijjk ijjk added the type: next label Mar 3, 2021
@ijjk
Copy link
Member

ijjk commented Mar 4, 2021

Stats from current PR

Default Server Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
buildDuration 11.3s 11.2s -126ms
nodeModulesSize 42.8 MB 42.8 MB ⚠️ +9.8 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
/ failed reqs 0 0
/ total time (seconds) 1.934 1.971 ⚠️ +0.04
/ avg req/sec 1292.49 1268.25 ⚠️ -24.24
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.182 1.196 ⚠️ +0.01
/error-in-render avg req/sec 2114.8 2090.77 ⚠️ -24.03
Client Bundles (main, webpack, commons)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
677f882d2ed8..e7a0.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.65 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 59.7 kB 59.7 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
amp-e3e9bc99..932c.js gzip 536 B 536 B
hooks-5023ef..3670.js gzip 888 B 888 B
index-3a2b03..c677.js gzip 227 B 227 B
link-177412b..043e.js gzip 1.67 kB 1.67 kB
routerDirect..1a66.js gzip 303 B 303 B
withRouter-9..1b7d.js gzip 302 B 302 B
Overall change 8.66 kB 8.66 kB
Client Build Manifests
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Rendered Page Sizes
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
index.html gzip 614 B 614 B
link.html gzip 620 B 620 B
withRouter.html gzip 609 B 609 B
Overall change 1.84 kB 1.84 kB

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
buildDuration 13.3s 12.8s -423ms
nodeModulesSize 42.8 MB 42.8 MB ⚠️ +9.8 kB
Client Bundles (main, webpack, commons)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
677f882d2ed8..e7a0.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.65 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 59.7 kB 59.7 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
amp-e3e9bc99..932c.js gzip 536 B 536 B
hooks-5023ef..3670.js gzip 888 B 888 B
index-3a2b03..c677.js gzip 227 B 227 B
link-177412b..043e.js gzip 1.67 kB 1.67 kB
routerDirect..1a66.js gzip 303 B 303 B
withRouter-9..1b7d.js gzip 302 B 302 B
Overall change 8.66 kB 8.66 kB
Client Build Manifests
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_error.js 1.02 MB 1.02 MB ⚠️ +28 B
404.html 2.67 kB 2.67 kB
500.html 2.65 kB 2.65 kB
amp.amp.html 10.5 kB 10.5 kB
amp.html 1.86 kB 1.86 kB
hooks.html 1.92 kB 1.92 kB
index.js 1.02 MB 1.02 MB ⚠️ +28 B
link.js 1.08 MB 1.08 MB ⚠️ +28 B
routerDirect.js 1.07 MB 1.07 MB ⚠️ +28 B
withRouter.js 1.07 MB 1.07 MB ⚠️ +28 B
Overall change 5.27 MB 5.27 MB ⚠️ +140 B

Webpack 5 Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
buildDuration 13.2s 13.3s ⚠️ +56ms
nodeModulesSize 42.8 MB 42.8 MB ⚠️ +9.8 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
/ failed reqs 0 0
/ total time (seconds) 1.988 2.014 ⚠️ +0.03
/ avg req/sec 1257.63 1241.47 ⚠️ -16.16
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.258 1.266 ⚠️ +0.01
/error-in-render avg req/sec 1986.97 1974.57 ⚠️ -12.4
Client Bundles (main, webpack, commons)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
597-74632e79..1d47.js gzip 13.3 kB 13.3 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 6.6 kB 6.6 kB
webpack-HASH.js gzip 954 B 954 B
Overall change 60.1 kB 60.1 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_app-aedc815..1421.js gzip 1.26 kB 1.26 kB
_error-71ec2..1a96.js gzip 3.38 kB 3.38 kB
amp-33a09cb0..6745.js gzip 536 B 536 B
hooks-4e968a..f870.js gzip 902 B 902 B
index-5c6845..f75c.js gzip 230 B 230 B
link-99f0c6c..b84a.js gzip 1.65 kB 1.65 kB
routerDirect..bb56.js gzip 306 B 306 B
withRouter-7..2133.js gzip 302 B 302 B
Overall change 8.57 kB 8.57 kB
Client Build Manifests
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
_buildManifest.js gzip 326 B 326 B
Overall change 326 B 326 B
Rendered Page Sizes
vercel/next.js canary adrianos10/next.js feature/ssg-cache-cleanup Change
index.html gzip 586 B 586 B
link.html gzip 592 B 592 B
withRouter.html gzip 581 B 581 B
Overall change 1.76 kB 1.76 kB

Diffs

Diff for index.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "aOhlfCJ3uPqshAvGpMo24",
+        "buildId": "EHp1EamrROJSVoSuQdJlu",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/aOhlfCJ3uPqshAvGpMo24/_buildManifest.js"
+      src="/_next/static/EHp1EamrROJSVoSuQdJlu/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/aOhlfCJ3uPqshAvGpMo24/_ssgManifest.js"
+      src="/_next/static/EHp1EamrROJSVoSuQdJlu/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "aOhlfCJ3uPqshAvGpMo24",
+        "buildId": "EHp1EamrROJSVoSuQdJlu",
         "isFallback": false,
         "gip": true
       }
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/aOhlfCJ3uPqshAvGpMo24/_buildManifest.js"
+      src="/_next/static/EHp1EamrROJSVoSuQdJlu/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/aOhlfCJ3uPqshAvGpMo24/_ssgManifest.js"
+      src="/_next/static/EHp1EamrROJSVoSuQdJlu/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "aOhlfCJ3uPqshAvGpMo24",
+        "buildId": "EHp1EamrROJSVoSuQdJlu",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/aOhlfCJ3uPqshAvGpMo24/_buildManifest.js"
+      src="/_next/static/EHp1EamrROJSVoSuQdJlu/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/aOhlfCJ3uPqshAvGpMo24/_ssgManifest.js"
+      src="/_next/static/EHp1EamrROJSVoSuQdJlu/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: 26439ef

@DennieMello
Copy link

As I understand it, it would be preferable to do a second revalidation than to clear the cache.

@FSaldanha
Copy link
Contributor

Maybe you'd want to check this discussion out: #22384

There, we're proposing to forcefully make cache data entry stale, rather than deleting it.

Copy link
Member

@ijjk ijjk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ijjk ijjk closed this May 22, 2022
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 22, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants