summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Bjorn Lu <bjornlu.dev@gmail.com> 2024-04-16 21:21:19 +0800
committerGravatar GitHub <noreply@github.com> 2024-04-16 21:21:19 +0800
commit90669472df3a05b33f0de46fd2d039e3eba7f7dd (patch)
treef8b9ed0214cf623d33ff1e181f662517eed4905f
parent1ce22881c657becf0397b83ac393fb5d2399104c (diff)
downloadastro-90669472df3a05b33f0de46fd2d039e3eba7f7dd.tar.gz
astro-90669472df3a05b33f0de46fd2d039e3eba7f7dd.tar.zst
astro-90669472df3a05b33f0de46fd2d039e3eba7f7dd.zip
Disable streaming for SSG (#10796)
-rw-r--r--.changeset/eight-hotels-try.md5
-rw-r--r--packages/astro/src/core/build/pipeline.ts3
-rw-r--r--packages/astro/src/runtime/server/render/astro/render.ts4
-rw-r--r--packages/astro/test/content-collections-render.test.js6
4 files changed, 12 insertions, 6 deletions
diff --git a/.changeset/eight-hotels-try.md b/.changeset/eight-hotels-try.md
new file mode 100644
index 000000000..f1fab2897
--- /dev/null
+++ b/.changeset/eight-hotels-try.md
@@ -0,0 +1,5 @@
+---
+"astro": patch
+---
+
+Disables streaming when rendering site with `output: "static"`
diff --git a/packages/astro/src/core/build/pipeline.ts b/packages/astro/src/core/build/pipeline.ts
index a89aa10f0..245904660 100644
--- a/packages/astro/src/core/build/pipeline.ts
+++ b/packages/astro/src/core/build/pipeline.ts
@@ -53,7 +53,8 @@ export class BuildPipeline extends Pipeline {
return assetLink;
}
const serverLike = isServerLikeOutput(config);
- const streaming = true;
+ // We can skip streaming in SSG for performance as writing as strings are faster
+ const streaming = serverLike;
super(
options.logger,
manifest,
diff --git a/packages/astro/src/runtime/server/render/astro/render.ts b/packages/astro/src/runtime/server/render/astro/render.ts
index 37a78725a..f918f55c1 100644
--- a/packages/astro/src/runtime/server/render/astro/render.ts
+++ b/packages/astro/src/runtime/server/render/astro/render.ts
@@ -31,6 +31,10 @@ export async function renderToString(
let str = '';
let renderedFirstPageChunk = false;
+ if (isPage) {
+ await bufferHeadContent(result);
+ }
+
const destination: RenderDestination = {
write(chunk) {
// Automatic doctype insertion for pages
diff --git a/packages/astro/test/content-collections-render.test.js b/packages/astro/test/content-collections-render.test.js
index 0e8e37fb1..277ef8c06 100644
--- a/packages/astro/test/content-collections-render.test.js
+++ b/packages/astro/test/content-collections-render.test.js
@@ -2,11 +2,7 @@ import * as assert from 'node:assert/strict';
import { after, before, describe, it } from 'node:test';
import * as cheerio from 'cheerio';
import testAdapter from './test-adapter.js';
-import { isWindows, loadFixture } from './test-utils.js';
-
-if (!isWindows) {
- describe();
-}
+import { loadFixture } from './test-utils.js';
describe('Content Collections - render()', () => {
describe('Build - SSG', () => {