0

Le site Web d'origine ne met pas en cache le html, le css ou les images comme je le pense. Les résultats de google chrome har pour une seule image en demandant différentes pages sur le site sont ci-dessous. Il fait partie d'une navigation plus large d'un site Web essayant de comprendre pourquoi le navigateur pense qu'il devrait être caché mais le navigateur est re-demandé du serveur. J'ai enlevé tous har qui ne sont pas spécifiquement liés à cette image.Pourquoi les 2e et 3e demandes de la même image ne sont-elles pas mises en cache?

Je n'ai aucun cache-killer ou cache-disabler activé. Je suis même allé sur un ordinateur relativement propre pour m'assurer qu'il n'y avait pas d'outils de développement installés qui pourraient jouer avec le cache.

Tous les en-têtes de demande/réponse de la première demande semblent impliquer que les demandes 2 et 3 ne doivent pas faire de demandes de réexpédition mais proviennent du cache local du navigateur.

Qu'est-ce qui me manque?

{ 
    "startedDateTime": "2017-02-10T21:21:44.273Z", 
    "time": 56.46199999999624, 
    "request": { 
     "method": "GET", 
     "url": "http://616206ee2c1b2155fd11-21abbde6fa52e03b7fd037b3488bb991.r53.cf1.rackcdn.com/images/default-source/site-cdn/LoginLogo.png", 
     "httpVersion": "HTTP/1.1", 
     "headers": [ 
     { 
      "name": "Accept", 
      "value": "image/webp,image/*,*/*;q=0.8" 
     }, 
     { 
      "name": "Connection", 
      "value": "keep-alive" 
     }, 
     { 
      "name": "Accept-Encoding", 
      "value": "gzip, deflate, sdch" 
     }, 
     { 
      "name": "Referer", 
      "value": "http://authentrip.com/" 
     }, 
     { 
      "name": "Host", 
      "value": "616206ee2c1b2155fd11-21abbde6fa52e03b7fd037b3488bb991.r53.cf1.rackcdn.com" 
     }, 
     { 
      "name": "Accept-Language", 
      "value": "en-US,en;q=0.8" 
     }, 
     { 
      "name": "User-Agent", 
      "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36" 
     } 
     ], 
     "queryString": [], 
     "cookies": [], 
     "headersSize": 428, 
     "bodySize": 0 
    }, 
    "response": { 
     "status": 200, 
     "statusText": "OK", 
     "httpVersion": "HTTP/1.1", 
     "headers": [ 
     { 
      "name": "Date", 
      "value": "Fri, 10 Feb 2017 21:21:44 GMT" 
     }, 
     { 
      "name": "Origin", 
      "value": "https://mycloud.rackspace.com" 
     }, 
     { 
      "name": "Last-Modified", 
      "value": "Fri, 09 Dec 2016 05:10:48 GMT" 
     }, 
     { 
      "name": "ETag", 
      "value": "ab904584a8e355da2fd0437065839e10" 
     }, 
     { 
      "name": "Content-Type", 
      "value": "image/png" 
     }, 
     { 
      "name": "X-Timestamp", 
      "value": "1481260247.52133" 
     }, 
     { 
      "name": "Cache-Control", 
      "value": "public, max-age=349" 
     }, 
     { 
      "name": "Content-Length", 
      "value": "6397" 
     }, 
     { 
      "name": "Connection", 
      "value": "keep-alive" 
     }, 
     { 
      "name": "Accept-Ranges", 
      "value": "bytes" 
     }, 
     { 
      "name": "X-Trans-Id", 
      "value": "txbeec00752b6a4e1e9e3b5-00589e2ca4dfw1" 
     }, 
     { 
      "name": "Expires", 
      "value": "Fri, 10 Feb 2017 21:27:33 GMT" 
     } 
     ], 
     "cookies": [], 
     "content": { 
     "size": 6397, 
     "mimeType": "image/png", 
     "compression": 0 
     }, 
     "redirectURL": "", 
     "headersSize": 433, 
     "bodySize": 6397, 
     "_transferSize": 6830 
    }, 
    "cache": {}, 
    "timings": { 
     "blocked": 0.396999999992431, 
     "dns": -1, 
     "connect": -1, 
     "send": 0.13800000000685503, 
     "wait": 23.861999999994016, 
     "receive": 32.06500000000294, 
     "ssl": -1 
    }, 
    "serverIPAddress": "204.2.145.184", 
    "connection": "989", 
    "pageref": "page_1" 
    }, 
    { 
    "startedDateTime": "2017-02-10T21:22:48.357Z", 
    "time": 0, 
    "request": { 
     "method": "GET", 
     "url": "http://616206ee2c1b2155fd11-21abbde6fa52e03b7fd037b3488bb991.r53.cf1.rackcdn.com/images/default-source/site-cdn/LoginLogo.png", 
     "httpVersion": "HTTP/1.1", 
     "headers": [ 
     { 
      "name": "Accept", 
      "value": "image/webp,image/*,*/*;q=0.8" 
     }, 
     { 
      "name": "Connection", 
      "value": "keep-alive" 
     }, 
     { 
      "name": "Accept-Encoding", 
      "value": "gzip, deflate, sdch" 
     }, 
     { 
      "name": "Referer", 
      "value": "http://authentrip.com/" 
     }, 
     { 
      "name": "Host", 
      "value": "616206ee2c1b2155fd11-21abbde6fa52e03b7fd037b3488bb991.r53.cf1.rackcdn.com" 
     }, 
     { 
      "name": "Accept-Language", 
      "value": "en-US,en;q=0.8" 
     }, 
     { 
      "name": "User-Agent", 
      "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36" 
     } 
     ], 
     "queryString": [], 
     "cookies": [], 
     "headersSize": 428, 
     "bodySize": 0 
    }, 
    "response": { 
     "status": 200, 
     "statusText": "OK", 
     "httpVersion": "HTTP/1.1", 
     "headers": [ 
     { 
      "name": "Date", 
      "value": "Fri, 10 Feb 2017 21:21:44 GMT" 
     }, 
     { 
      "name": "Origin", 
      "value": "https://mycloud.rackspace.com" 
     }, 
     { 
      "name": "Last-Modified", 
      "value": "Fri, 09 Dec 2016 05:10:48 GMT" 
     }, 
     { 
      "name": "ETag", 
      "value": "ab904584a8e355da2fd0437065839e10" 
     }, 
     { 
      "name": "Content-Type", 
      "value": "image/png" 
     }, 
     { 
      "name": "X-Timestamp", 
      "value": "1481260247.52133" 
     }, 
     { 
      "name": "Cache-Control", 
      "value": "public, max-age=349" 
     }, 
     { 
      "name": "Content-Length", 
      "value": "6397" 
     }, 
     { 
      "name": "Connection", 
      "value": "keep-alive" 
     }, 
     { 
      "name": "Accept-Ranges", 
      "value": "bytes" 
     }, 
     { 
      "name": "X-Trans-Id", 
      "value": "txbeec00752b6a4e1e9e3b5-00589e2ca4dfw1" 
     }, 
     { 
      "name": "Expires", 
      "value": "Fri, 10 Feb 2017 21:27:33 GMT" 
     } 
     ], 
     "cookies": [], 
     "content": { 
     "size": 6397, 
     "mimeType": "image/png" 
     }, 
     "redirectURL": "", 
     "headersSize": 433, 
     "bodySize": 0, 
     "_transferSize": 0 
    }, 
    "cache": {}, 
    "timings": { 
     "blocked": -1, 
     "dns": -1, 
     "connect": -1, 
     "send": 0, 
     "wait": 0, 
     "receive": 0, 
     "ssl": -1 
    }, 
    "serverIPAddress": "204.2.145.184", 
    "connection": "989", 
    "pageref": "page_2" 
    } 
    { 
    "startedDateTime": "2017-02-10T21:23:38.412Z", 
    "time": 0, 
    "request": { 
     "method": "GET", 
     "url": "http://616206ee2c1b2155fd11-21abbde6fa52e03b7fd037b3488bb991.r53.cf1.rackcdn.com/images/default-source/site-cdn/LoginLogo.png", 
     "httpVersion": "HTTP/1.1", 
     "headers": [ 
     { 
      "name": "Accept", 
      "value": "image/webp,image/*,*/*;q=0.8" 
     }, 
     { 
      "name": "Connection", 
      "value": "keep-alive" 
     }, 
     { 
      "name": "Accept-Encoding", 
      "value": "gzip, deflate, sdch" 
     }, 
     { 
      "name": "Referer", 
      "value": "http://authentrip.com/" 
     }, 
     { 
      "name": "Host", 
      "value": "616206ee2c1b2155fd11-21abbde6fa52e03b7fd037b3488bb991.r53.cf1.rackcdn.com" 
     }, 
     { 
      "name": "Accept-Language", 
      "value": "en-US,en;q=0.8" 
     }, 
     { 
      "name": "User-Agent", 
      "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36" 
     } 
     ], 
     "queryString": [], 
     "cookies": [], 
     "headersSize": 428, 
     "bodySize": 0 
    }, 
    "response": { 
     "status": 200, 
     "statusText": "OK", 
     "httpVersion": "HTTP/1.1", 
     "headers": [ 
     { 
      "name": "Date", 
      "value": "Fri, 10 Feb 2017 21:21:44 GMT" 
     }, 
     { 
      "name": "Origin", 
      "value": "https://mycloud.rackspace.com" 
     }, 
     { 
      "name": "Last-Modified", 
      "value": "Fri, 09 Dec 2016 05:10:48 GMT" 
     }, 
     { 
      "name": "ETag", 
      "value": "ab904584a8e355da2fd0437065839e10" 
     }, 
     { 
      "name": "Content-Type", 
      "value": "image/png" 
     }, 
     { 
      "name": "X-Timestamp", 
      "value": "1481260247.52133" 
     }, 
     { 
      "name": "Cache-Control", 
      "value": "public, max-age=349" 
     }, 
     { 
      "name": "Content-Length", 
      "value": "6397" 
     }, 
     { 
      "name": "Connection", 
      "value": "keep-alive" 
     }, 
     { 
      "name": "Accept-Ranges", 
      "value": "bytes" 
     }, 
     { 
      "name": "X-Trans-Id", 
      "value": "txbeec00752b6a4e1e9e3b5-00589e2ca4dfw1" 
     }, 
     { 
      "name": "Expires", 
      "value": "Fri, 10 Feb 2017 21:27:33 GMT" 
     } 
     ], 
     "cookies": [], 
     "content": { 
     "size": 6397, 
     "mimeType": "image/png" 
     }, 
     "redirectURL": "", 
     "headersSize": 433, 
     "bodySize": 0, 
     "_transferSize": 0 
    }, 
    "cache": {}, 
    "timings": { 
     "blocked": -1, 
     "dns": -1, 
     "connect": -1, 
     "send": 0, 
     "wait": 0, 
     "receive": 0, 
     "ssl": -1 
    }, 
    "serverIPAddress": "204.2.145.184", 
    "connection": "989", 
    "pageref": "page_3" 
    } 

Répondre

1

En fait, Chrome a servi les réponses aux deuxième et troisième demandes du cache. Vous devez regarder propriété entry.response.bodySize.

extrait pertinent de HAR specification:

bodySize [nombre] - Taille du corps de la réponse reçue en octets. Mis à zéro en cas de réponses provenant du cache (304). Défini sur -1 si l'information n'est pas disponible.

Il est également intéressant HAR Viewer GitHub issue. Ils utilisent la fonction ci-dessous pour déterminer si la réponse à la demande a été fournie à partir du cache:

HarModel.isCachedEntry = function(entry) { 
    var response = entry.response; 
    var resBodySize = response.bodySize > 0 ? response.bodySize : 0; 
    return (response.status == 304 || (resBodySize === 0 && response.content && response.content.size > 0)); 
}; 
+0

Merci. C'était censé être servi à partir du cache mais je ne pouvais pas "voir" comment ça se passait. C'est sympa d'avoir la réponse – DFBerry