Critical Asset Decision Map
Classifies page assets as preload, defer, lazy, or normal based on render role and route importance.
Purpose
Classifies page assets as preload, defer, lazy, or normal based on render role and route importance.
Snippet details
ContextPerformanceLevelAdvancedCopy-and-paste statusMarked safe after review.Categories
- Security
Code
<?php
/*
* Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
* Free for personal and internal use. Paid project use requires visible credit
* to Jeffery L. Paris. Corporate use requires a paid license fee unless a
* separate written license states otherwise.
*/
/**
* Critical Asset Decision Map.
*
* Purpose:
* Classifies page assets as preload, defer, lazy, or normal based on render role and route importance.
*
* @param array $assets Asset rows with type, render_role, and route_scope.
* @return array Asset loading decisions.
*/
function ogSnippetCriticalAssetDecisionMap(array $assets): array {
$decisions = array();
foreach ($assets as $asset) {
$action = 'normal';
$role = '';
if (isset($asset['render_role'])) {
$role = (string) $asset['render_role'];
}
$type = '';
if (isset($asset['type'])) {
$type = (string) $asset['type'];
}
if ($role === 'lcp-image' || $role === 'critical-font') {
$action = 'preload';
}
if ($type === 'script' && $role !== 'critical') {
$action = 'defer';
}
if ($type === 'image' && $role === 'below-fold') {
$action = 'lazy';
}
$decisions[] = array('asset' => (string) $asset['path'], 'action' => $action);
}
return $decisions;
}
$asset_decisions = ogSnippetCriticalAssetDecisionMap(array(array('path' => '/img/x-wing.webp', 'type' => 'image', 'render_role' => 'lcp-image')));
echo $asset_decisions[0]['action'];