Magento – Magento 2: How to Solve Defer parsing of JavaScript on CDN

cdnjavascriptmagento2pagespeed

My website in Production Mode & I set Javascript to be Merged. So we have only one JS file.

On Speed related website it keep saying F grade on Defer Parsing of Javascript. I'm using CDN.

<script type="text/javascript"  src="cdn.domain.com/pub/static/_cache/merged/0285dfa79816d33a235c33875d3d2e57.min.js"></script>

How to achieve mostly A Grade in this?

Need to add async in Script Tag but How & Where?

Already followed Defer parsing of JavaScript in Magento

Best Answer

In Observer method

        $response = $observer->getEvent()->getData('response');
        if (!$response)
            return;
        $html = $response->getBody();
        if ($html == '')
            return;
        $conditionalJsPattern = '@(?:<script type="text/javascript"|<script)(*)</script>@msU';
        preg_match_all($conditionalJsPattern, $html, $_matches);
        $_js_if = implode('', $_matches[0]);
        $html = preg_replace($conditionalJsPattern, '', $html);
        $html = $_js_if;
        $response->setBody($html);

let me know if you have any issue with this module @AnkitShah