feat: add critical render path optimization

This commit is contained in:
Stefan Imhoff
2023-06-14 13:26:05 +02:00
parent 10b820d120
commit 976d5968f6
4 changed files with 49 additions and 10 deletions

View File

@@ -3,14 +3,15 @@ import preact from '@astrojs/preact';
import prefetch from '@astrojs/prefetch';
import sitemap from '@astrojs/sitemap';
import tailwind from '@astrojs/tailwind';
import critters from 'astro-critters';
import { astroImageTools } from 'astro-imagetools';
import webmanifest from 'astro-webmanifest';
import { defineConfig } from 'astro/config';
import serviceWorker from 'astrojs-service-worker';
import { site } from './src/data/site';
import { remarkReadingTime, remarkWidont } from './src/utils';
// https://astro.build/config
export default defineConfig({
site: 'https://www.stefanimhoff.de',
markdown: {
@@ -57,9 +58,6 @@ export default defineConfig({
display: 'standalone',
}),
serviceWorker(),
critters(),
],
build: {
inlineStylesheets: 'auto',
},
compressHTML: true,
});

View File

@@ -25,6 +25,7 @@
"@astrojs/sitemap": "^1.3.3",
"@astrojs/tailwind": "^3.1.3",
"astro": "^2.6.4",
"astro-critters": "^1.1.38",
"astro-icon": "^0.8.1",
"astro-imagetools": "^0.8.1",
"astro-seo": "^0.7.4",

48
pnpm-lock.yaml generated
View File

@@ -33,6 +33,9 @@ dependencies:
astro:
specifier: ^2.6.4
version: 2.6.4(@types/node@20.3.1)(sharp@0.32.1)
astro-critters:
specifier: ^1.1.38
version: 1.1.38
astro-icon:
specifier: ^0.8.1
version: 0.8.1
@@ -5032,6 +5035,13 @@ packages:
hasBin: true
dev: false
/astro-critters@1.1.38:
resolution: {integrity: sha512-hU2XTAxJg3KIq6u5H6VJCJBr120uG8YbTJOqeB/0VP8ufmPCkBcvQs6HzSP1g5qgPjkX9572lZdbSjmrkVjqvQ==}
dependencies:
critters: 0.0.18
files-pipe: 0.0.7
dev: false
/astro-eslint-parser@0.14.0:
resolution: {integrity: sha512-3F8l1h7+5MNxzDg1cSQxEloalG7fj64K6vOERChUVG7RLnAzSoafADnPQlU8DpMM3WRNfRHSC4NwUCORk/aPrA==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -6219,6 +6229,18 @@ packages:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
/critters@0.0.18:
resolution: {integrity: sha512-I7t/da29EIWXgxx2RSW1md1DvenEgEuLlki6nHE5+Nc0e3eib5AuGIGbPVuI8q+erCKkSP9T/NqYfvasAy7x7A==}
dependencies:
chalk: 4.1.2
css-select: 5.1.0
dom-serializer: 2.0.0
domhandler: 5.0.3
htmlparser2: 8.0.2
postcss: 8.4.24
pretty-bytes: 5.6.0
dev: false
/cron-parser@4.8.1:
resolution: {integrity: sha512-jbokKWGcyU4gl6jAfX97E1gDpY12DJ1cLJZmoDzaAln/shZ+S3KBFBuA2Q6WeUN4gJf/8klnV1EfvhA2lK5IRQ==}
engines: {node: '>=12.0.0'}
@@ -6392,7 +6414,6 @@ packages:
domhandler: 5.0.3
domutils: 3.1.0
nth-check: 2.1.1
dev: true
/css-tree@1.1.3:
resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
@@ -6608,6 +6629,11 @@ packages:
engines: {node: '>=12.4.0'}
dev: false
/deepmerge-ts@5.1.0:
resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==}
engines: {node: '>=16.0.0'}
dev: false
/deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
@@ -6850,7 +6876,6 @@ packages:
domelementtype: 2.3.0
domhandler: 5.0.3
entities: 4.5.0
dev: true
/dom-walk@0.1.2:
resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
@@ -6870,7 +6895,6 @@ packages:
engines: {node: '>= 4'}
dependencies:
domelementtype: 2.3.0
dev: true
/domutils@2.8.0:
resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
@@ -6886,7 +6910,6 @@ packages:
dom-serializer: 2.0.0
domelementtype: 2.3.0
domhandler: 5.0.3
dev: true
/dot-case@3.0.4:
resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
@@ -6988,7 +7011,6 @@ packages:
/entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
dev: true
/env-paths@3.0.0:
resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
@@ -7839,6 +7861,13 @@ packages:
trim-repeated: 2.0.0
dev: true
/files-pipe@0.0.7:
resolution: {integrity: sha512-BkXQoAEo1X3RqmEucIBLL1ddc/LM3lqsf5ipIf/bRrUTn3SQZWhThgpIl1/ma2VNesB2hBoY+CB0rrZ3b1tQhA==}
dependencies:
deepmerge-ts: 5.1.0
fast-glob: 3.2.12
dev: false
/fill-range@4.0.0:
resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
engines: {node: '>=0.10.0'}
@@ -8705,6 +8734,15 @@ packages:
resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
dev: false
/htmlparser2@8.0.2:
resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
dependencies:
domelementtype: 2.3.0
domhandler: 5.0.3
domutils: 3.1.0
entities: 4.5.0
dev: false
/http-cache-semantics@4.1.1:
resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
dev: true

View File

@@ -1,3 +1,4 @@
/* critters:exclude start */
body {
padding-block-end: 0.5cm;
padding-block-start: 1cm;
@@ -53,3 +54,4 @@ a[href^='https://']::after
a[href^='#']::after {
display: none;
}
/* critters:exclude end */