perf: implement KLZ blueprint optimizations (LCP, Payload, Caching)
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 1m10s
Build & Deploy / 🧪 QA (push) Failing after 1m27s
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s

This commit is contained in:
2026-06-20 20:32:08 +02:00
parent 34839ad5a5
commit e0d6ea0d6c
4 changed files with 19 additions and 19 deletions

View File

@@ -186,8 +186,6 @@ export default async function Layout(props: {
data-scroll-behavior="smooth" data-scroll-behavior="smooth"
> >
<head> <head>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
<link rel="preconnect" href="https://img.infra.mintel.me" /> <link rel="preconnect" href="https://img.infra.mintel.me" />
<link rel="icon" href="/favicon.ico" sizes="any" /> <link rel="icon" href="/favicon.ico" sizes="any" />
<link rel="apple-touch-icon" href="/apple-icon.png" sizes="180x180" /> <link rel="apple-touch-icon" href="/apple-icon.png" sizes="180x180" />

View File

@@ -6,21 +6,22 @@ import { MDXRemote } from 'next-mdx-remote/rsc';
export const dynamic = 'force-dynamic'; export const dynamic = 'force-dynamic';
// Import components used in MDX import dynamic from 'next/dynamic';
import { HeroVideo as HomeHero } from '@/components/blocks/HeroVideo';
import { SubCompanyTiles as HomeSubCompanyTiles } from '@/components/blocks/SubCompanyTiles'; const HomeHero = dynamic(() => import('@/components/blocks/HeroVideo').then(mod => mod.HeroVideo), { ssr: true });
import { CompetenceBentoGrid as HomeCompetenceBentoGrid } from '@/components/blocks/CompetenceBentoGrid'; const HomeSubCompanyTiles = dynamic(() => import('@/components/blocks/SubCompanyTiles').then(mod => mod.SubCompanyTiles));
import { ReferencesSlider as HomeReferencesSlider } from '@/components/blocks/ReferencesSlider'; const HomeCompetenceBentoGrid = dynamic(() => import('@/components/blocks/CompetenceBentoGrid').then(mod => mod.CompetenceBentoGrid));
import { FaqBlock } from '@/components/blocks/FaqBlock'; const HomeReferencesSlider = dynamic(() => import('@/components/blocks/ReferencesSlider').then(mod => mod.ReferencesSlider));
import { CertificatesBlock } from '@/components/blocks/CertificatesBlock'; const FaqBlock = dynamic(() => import('@/components/blocks/FaqBlock').then(mod => mod.FaqBlock));
import { HeroSection } from '@/components/blocks/HeroSection'; const CertificatesBlock = dynamic(() => import('@/components/blocks/CertificatesBlock').then(mod => mod.CertificatesBlock));
const HeroSection = dynamic(() => import('@/components/blocks/HeroSection').then(mod => mod.HeroSection), { ssr: true });
import JsonLd from '@/components/JsonLd'; import JsonLd from '@/components/JsonLd';
import { Button } from '@/components/ui/Button'; import { Button } from '@/components/ui/Button';
import { Heading } from '@/components/ui/Heading'; import { Heading } from '@/components/ui/Heading';
import { AnimatedCounter } from '@/components/ui'; const AnimatedCounter = dynamic(() => import('@/components/ui').then(mod => mod.AnimatedCounter));
import { InteractiveGermanyMap } from '@/components/blocks/InteractiveGermanyMap'; const InteractiveGermanyMap = dynamic(() => import('@/components/blocks/InteractiveGermanyMap').then(mod => mod.InteractiveGermanyMap));
import { ScaleOfImpact } from '@/components/blocks/ScaleOfImpact'; const ScaleOfImpact = dynamic(() => import('@/components/blocks/ScaleOfImpact').then(mod => mod.ScaleOfImpact));
import { getAllReferences } from '@/lib/references'; import { getAllReferences } from '@/lib/references';
const mdxComponents = (references: any[]) => ({ const mdxComponents = (references: any[]) => ({

View File

@@ -2,7 +2,6 @@
import { Button } from '@/components/ui/Button'; import { Button } from '@/components/ui/Button';
import Image from 'next/image'; import Image from 'next/image';
import { motion, AnimatePresence } from 'framer-motion';
import { useState, useEffect } from 'react'; import { useState, useEffect } from 'react';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
@@ -81,11 +80,9 @@ export function HeroVideo(props: HeroVideoProps) {
<div className="absolute top-0 left-0 w-full h-48 bg-gradient-to-b from-black/70 to-transparent z-[3] pointer-events-none" /> <div className="absolute top-0 left-0 w-full h-48 bg-gradient-to-b from-black/70 to-transparent z-[3] pointer-events-none" />
<div className="container relative z-[4] text-center px-4"> <div className="container relative z-[4] text-center px-4">
<motion.div <div
key={`hero-content-${pathname}`} key={`hero-content-${pathname}`}
initial={{ opacity: 0, y: 40 }} className="animate-in fade-in slide-in-from-bottom-10 duration-1000 ease-out fill-mode-both"
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 1.2, ease: [0.16, 1, 0.3, 1] }}
> >
<h1 <h1
className="font-heading font-bold text-3xl sm:text-4xl md:text-6xl lg:text-8xl text-white mb-6 uppercase tracking-tight drop-shadow-lg" className="font-heading font-bold text-3xl sm:text-4xl md:text-6xl lg:text-8xl text-white mb-6 uppercase tracking-tight drop-shadow-lg"
@@ -114,7 +111,7 @@ export function HeroVideo(props: HeroVideoProps) {
{secondaryCtaLabel} {secondaryCtaLabel}
</Button> </Button>
</div> </div>
</motion.div> </div>
</div> </div>
</div> </div>
); );

View File

@@ -15,6 +15,10 @@ const nextConfig = {
pagesBufferLength: 2, pagesBufferLength: 2,
}, },
experimental: { experimental: {
staleTimes: {
dynamic: 0,
static: 30,
},
optimizePackageImports: [ optimizePackageImports: [
'lucide-react', 'lucide-react',
'framer-motion', 'framer-motion',