algo está "bloqueando" que mis imágenes se carguen más rápido. Probé configuraciones de Apache, nginx, encabezados de caché, nada cambia.

algo está "bloqueando" que mis imágenes se carguen más rápido. Probé configuraciones de Apache, nginx, encabezados de caché, nada cambia.

LA CUESTIÓN: las imágenes en mi sitio tardan un poco en comenzar a cargarse... como si algo estuviera bloqueando, peroincapaz de precisar quépodría ser la causa.

PHP 8 / último WHM

EJEMPLO EN VIVO:https://www.stubfeed.com/crypto

LO QUE INTENTÉ [.0A.] : cambiar de empresa de alojamiento web => sin cambios, hay algo en mi código web...

LO QUE INTENTÉ [.0B.]: Estaba con centos 7 y cambié a centos 8 => sigue igual

LO QUE INTENTÉ [.0C.]: Deshabilitar php-fpm => ayudó mucho, pero aún así la espera por las imágenes sigue ahí.

LO QUE INTENTÉ [.0D.]: buffers de salida activados o desactivados => sigue siendo el mismo

LO QUE INTENTÉ [.1.]: fusionar todos mis .css y .js en menos archivos (2.css 2.js en lugar de varios) // también agregué font-display:swap;

LO QUE INTENTÉ [.2.]: proxy inverso nginx para Apache (activado o desactivado => sin cambios ya que Cloudflare actúa como una CDN...)

LO QUE INTENTÉ [3]: configuraciones de Apache

Header set X-XSS-Protection "1; mode=block"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "no-referrer"
Header always set Permissions-Policy "geolocation=(self),midi=(self),sync-xhr=(self),magnetometer=(self),gyroscope=(self),fullscreen=(self)"

LO QUE INTENTÉ [4]: ​​encabezados de control de caché .htaccess

<IfModule mod_headers.c>
    ExpiresActive On
    <FilesMatch “\.(webp|webm|flv|ico|pdf|avi|mov|mp4|m4v|m4a|ppt|doc|mp3|wmv|wav|gif|jpg|jpeg|png|apng|swf|css|js|otf|ttf|woff)$">
    Header set Cache-Control "max-age=31536000, public"
    </FilesMatch>
</IfModule>

LO QUE INTENTÉ [5]: convertirTODOmis imágenes en webp -calidad 60 (con iMageMagick) => redujo mucho el tamaño;) ==>> pero aún no solucionó el problema.

LO QUE INTENTÉ [6]: en la consola de Google Chrome => "recarga completa de caché vacía" => ¿parece más rápido que la carga normal?

LO QUE INTENTÉ [7]: en la consola de Google Chrome => pestaña de red => Veo cargado desde el caché pero de alguna manera con mis ojos, veo el menú muy rápido pero todas las demás imágenes, espera 1 o 2 segundos antes de aparecer

LO QUE INTENTÉ [8]: agregar una regla de página en Cloudflarehttps://www.stubfeed.com/media/* TTL de caché del navegador: un año, nivel de caché: almacenar en caché todo, TTL de caché de borde: 14 días, armadura de engaño de caché: activado, control de caché de origen: activado

LO QUE INTENTÉ [9]: Cargar 4, 6, 9, 23 imágenes => todas iguales, fijas: lo que veo con mis ojos (espera 1 segundo, luego aparecen las imágenes...) [dice el probador de velocidad... .]

LO QUE INTENTÉ [10]: trabajador de servicio con almacenamiento en caché todo perfecto... => Lo desactivé porque comprobar desde el caché antes era terriblemente más lento... :( puedes verlo allí:https://www.stubfeed.com/ws.js?v=202108000021(en la matriz almacenable en caché agregué webb, pero lo eliminé...)

EL RESULTADO CON TODOS ESOS INTENTOS: el menú, el .css, el .js ==>> muy rápido e instantáneo... pero imágenes fijas después de 1 (algunas veces 2) segundos...

Puedes ver un informe aquí:https://gtmetrix.com/reports/www.stubfeed.com/4MGVqAFv/

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

curl -I https://www.stubfeed.com/media/feed/2021/08/02/14463960829226.webp

HTTP/2 200 
date: Mon, 02 Aug 2021 02:13:44 GMT
content-type: image/webp
content-length: 78296
x-content-type-options: nosniff
referrer-policy: no-referrer
permissions-policy: geolocation=(self),midi=(self),sync-xhr=(self),magnetometer=(self),gyroscope=(self),fullscreen=(self)
last-modified: Mon, 02 Aug 2021 01:40:11 GMT
vary: Accept-Encoding
x-xss-protection: 1; mode=block
strict-transport-security: max-age=15552000; includeSubDomains; preload
cache-control: public, max-age=31536000
cf-cache-status: HIT
age: 1483
accept-ranges: bytes
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=QawI6BH%2FlcrvvsUxJ6VgTJzwNqvb%2BVqBRo1gbxng6JRggJe9MgZbkWhLtMjmwvwC8yB3SLaoJXT%2BvNZDuLCzya1g8HlxGFbpFMzXB%2F4p%2B9GcIGIZANk%2FjfvIx0Lu2t07QIsr"}],"group":"cf-nel","max_age":604800}
nel: {"report_to":"cf-nel","max_age":604800}
server: cloudflare
cf-ray: 6783c9ea7f3c4bd1-YUL
alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400, h3=":443"; ma=86400

Respuesta1

Después de investigar más profundamente lo encontré.

Fueron los "pasos" que tenía... cargar la página y luego ajax...

Lo reconsideré e hice una inclusión.

También remodelé mi ajax para que sea asíncrono.

    async function stubajax (divid,phphat,postix = [],pend = 'html') {
    
        var pcache = (Math.floor(Math.random() * 100000000) + 1);
        
        postix["preventcache"] = pcache;
        postix["divid"] = encodeURIComponent(divid);
        postix["mojax_height"] = encodeURIComponent($(window).height());
        postix["mojax_width"] = encodeURIComponent($(window).width());

postix["cookies"] = decodeURIComponent(document.cookie); // if you need to send cookies
        
        for (var i = 0; i < localStorage.length; i++){ postix[localStorage.key(i)] = localStorage.getItem(localStorage.key(i)); }
        for (var i = 0; i < sessionStorage.length; i++){ postix[sessionStorage.key(i)] = sessionStorage.getItem(sessionStorage.key(i)); }
            
        await fetch(phphat+"?pcache="+pcache+"&fetchx="+pcache, {
          method: "POST", body: JSON.stringify(Object.assign({}, postix)), headers: {"Content-type": "application/json; charset=UTF-8"}
        }).then( response => { return response.text(); }).then( html => { 
            switch ( pend ){
                case 'append' : $("#"+divid+"_message").append(extraforml+html); break;
                case 'prepend' : $("#"+divid+"_message").prepend(extraforml+html); break;
                default : $("#"+divid+"_message").html(extraforml+html); break;
            }
        }).catch( err => console.log(err) );
          
    }

luego se puede llamar así

stubajax('id','...php',{'somevar1':'hello'});

// (cuando se alcanza el 100% en cada tema en el faro, agregaron una animación de fuegos artificiales)

ingrese la descripción de la imagen aquí

información relacionada