Guest User

Untitled

a guest
Nov 7th, 2025
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 3.60 KB | None | 0 0
  1. /* =======================================================
  2.    πŸš€ Modapaya Performance Optimizer v2.0
  3.    Author: ChatGPT Assistant
  4.    Description: Full-site performance booster for BigCommerce
  5.    ======================================================= */
  6.  
  7. (function() {
  8.   "use strict";
  9.  
  10.   /* =============================
  11.      1️⃣ Preload Hero Banner Image
  12.      ============================= */
  13.   var heroURL = 'https://cdn11.bigcommerce.com/s-t48lqqxd8a/images/stencil/original/image-manager/image-2025-06-08-124235809.webp';
  14.   if (!document.querySelector(`link[rel="preload"][href="${heroURL}"]`)) {
  15.     const preloadHero = document.createElement('link');
  16.     preloadHero.rel = 'preload';
  17.     preloadHero.as = 'image';
  18.     preloadHero.href = heroURL;
  19.     document.head.appendChild(preloadHero);
  20.   }
  21.  
  22.   /* =============================
  23.      2️⃣ Preconnect to Key Origins
  24.      ============================= */
  25.   const origins = [
  26.     'https://cdn11.bigcommerce.com',
  27.     'https://fonts.googleapis.com',
  28.     'https://fonts.gstatic.com'
  29.   ];
  30.   origins.forEach(url => {
  31.     const pre = document.createElement('link');
  32.     pre.rel = 'preconnect';
  33.     pre.href = url;
  34.     pre.crossOrigin = 'anonymous';
  35.     document.head.appendChild(pre);
  36.  
  37.     const dns = document.createElement('link');
  38.     dns.rel = 'dns-prefetch';
  39.     dns.href = url;
  40.     document.head.appendChild(dns);
  41.   });
  42.  
  43.   /* =============================
  44.      3️⃣ Lazyload All Images
  45.      ============================= */
  46.   document.addEventListener('DOMContentLoaded', function() {
  47.     const imgs = document.querySelectorAll('img:not([loading])');
  48.     imgs.forEach(img => {
  49.       img.setAttribute('loading', 'lazy');
  50.       img.setAttribute('decoding', 'async');
  51.     });
  52.   });
  53.  
  54.   /* =============================
  55.      4️⃣ Auto WebP Converter
  56.      (Switch .jpg/.png to .webp if available)
  57.      ============================= */
  58.   function switchToWebP(img) {
  59.     if (!img.dataset.webpChecked) {
  60.       const src = img.getAttribute('src');
  61.       if (src && /\.(jpg|jpeg|png)$/i.test(src)) {
  62.         const webpURL = src.replace(/\.(jpg|jpeg|png)(\?.*)?$/i, '.webp$2');
  63.         fetch(webpURL, { method: 'HEAD' })
  64.           .then(res => {
  65.             if (res.ok) {
  66.               img.src = webpURL;
  67.             }
  68.           })
  69.           .catch(() => {});
  70.       }
  71.       img.dataset.webpChecked = 'true';
  72.     }
  73.   }
  74.  
  75.   document.addEventListener('DOMContentLoaded', function() {
  76.     document.querySelectorAll('img').forEach(img => switchToWebP(img));
  77.   });
  78.  
  79.   /* =============================
  80.      5️⃣ Defer All Non-GTM Scripts
  81.      ============================= */
  82.   window.addEventListener('load', function() {
  83.     const scripts = document.querySelectorAll('script[src]');
  84.     scripts.forEach(script => {
  85.       const src = script.getAttribute('src');
  86.       if (
  87.         src &&
  88.         !src.includes('googletagmanager.com') &&
  89.         !src.includes('gtag/js') &&
  90.         !src.includes('analytics.js')
  91.       ) {
  92.         script.setAttribute('defer', '');
  93.       }
  94.     });
  95.   });
  96.  
  97.   /* =============================
  98.      6️⃣ Font Optimization
  99.      ============================= */
  100.   const preloadFont = document.createElement('link');
  101.   preloadFont.rel = 'preload';
  102.   preloadFont.as = 'style';
  103.   preloadFont.href = 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap';
  104.   document.head.appendChild(preloadFont);
  105.  
  106.   const applyFont = document.createElement('link');
  107.   applyFont.rel = 'stylesheet';
  108.   applyFont.href = preloadFont.href;
  109.   document.head.appendChild(applyFont);
  110.  
  111. })();
  112.  
Advertisement
Add Comment
Please, Sign In to add comment