Priority Hints and Resource Hints

Priority Hints and Resource Hints

Advanced Resource Loading Control

class ResourceHintsManager {
    middleware() {
        return (req, res, next) => {
            // Set Priority Hints header
            res.setHeader('Priority-Hints', 'importance');
            
            // Early Hints (103 status code)
            if (req.path === '/' && res.writeEarlyHints) {
                res.writeEarlyHints({
                    link: [
                        '</css/critical.css>; rel=preload; as=style',
                        '</js/main.js>; rel=preload; as=script',
                        '<https://fonts.googleapis.com>; rel=preconnect'
                    ]
                });
            }
            
            next();
        };
    }
    
    // Generate resource hints based on page type
    generateResourceHints(pageType) {
        const hints = {
            homepage: `
                <link rel="preconnect" href="https://api.example.com">
                <link rel="dns-prefetch" href="https://cdn.example.com">
                <link rel="preload" href="/css/critical.css" as="style">
                <link rel="preload" href="/fonts/main.woff2" as="font" crossorigin>
                <link rel="modulepreload" href="/js/app.mjs">
            `,
            product: `
                <link rel="preconnect" href="https://images.example.com">
                <link rel="preload" href="/js/product-gallery.js" as="script">
                <link rel="prefetch" href="/api/recommendations" as="fetch">
            `
        };
        
        return hints[pageType] || '';
    }
}