cnumr / cnumr/GreenIT-Analysis
[Firefox] Mauvaise prise en compte des requêtes qui tapent le cache
- Dominant language
- JavaScript
- Stars
- 161
- Forks
- 38
- PR merge metrics
- No merged PRs in 30d
Description
Bonjour,
Je rencontre le problème actuellement sur Firefox 138.0.4 (64 bits) sur Ubuntu.
_Le problème n'est pas présent dans Chrome._
Les requêtes effectuées plusieurs fois dans la même page sont automatiquement mises en cache par Firefox (Par exemple une image).
Exemple sur la page https://greenit.eco/ :
L'image https://greenit.eco/wp-content/uploads/2024/11/gri-logo-asso-regular-dark.svg est chargée 2 fois dans la page.
Elle apparaît 2 fois dans l'onglet Réseau (Un appel réel et un appel dont la taille de transfert est "mis en cache").
_A la différence de Chrome où la requête n’apparaît qu'une seule fois_
Ces requêtes devraient être ignorés dans les différents calculs du plugin car les informations qu'ils contiennent sont erronées :
- La taille de la réponse est incorrecte : 118.37Ko dans mon cas alors que l'image fait 14.21Ko.
- Le protocole utilisé est incorrect : HTTP/1.1 alors que la requête originale est en HTTP/2 et qu'en tapant le cache, le protocole importe peu.
Cela est sans doute plus ou moins corrélé avec les autres issues qui remontent que les données entre les différents navigateurs sont différentes.
Par exemple, sur l'un de mes sites de test, le nombre de requête sur la page passe de 398 sur chrome à 440 sur Firefox uniquement parce certaines images (A priori une 40aine) sont inclues 2 fois dans le DOM.
Pour la même raison, le plugin me remonte une erreur sur l'utilisation d'HTTP/2 car toutes les images provenant du cache remontent en utilisant HTTP/1.1
Je ne peux pas ouvrir de PR car je ne connais pas assez bien le format HAR pour savoir quelle donnée est pertinente à vérifier pour valider que la requête vient bien d'un cache :
Ci-dessous, un exemple de résultat HAR pour le retour du cache.
```json
{
"startedDateTime": "2025-05-23T10:53:42.198+02:00",
"request": {
"bodySize": 0,
"method": "GET",
"url": "https://greenit.eco/wp-content/uploads/2024/11/gri-logo-asso-regular-dark.svg",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Host",
"value": "greenit.eco"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0"
},
{
"name": "Accept",
"value": "image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5"
},
{
"name": "Accept-Language",
"value": "fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3"
},
{
"name": "Accept-Encoding",
"value": "gzip, deflate, br, zstd"
},
{
"name": "Referer",
"value": "https://greenit.eco/"
}
],
"cookies": [],
"queryString": [],
"headersSize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [],
"cookies": [],
"content": {
"mimeType": "image/svg+xml",
"size": 118368,
"text": ""
},
"redirectURL": "",
"headersSize": 0,
"bodySize": 0
},
"cache": {},
"timings": {},
"time": 0,
"pageref": "page_2"
}
```
Plusieurs détails peuvent sans doute permettre d'identifier que ce n'est pas une vraie requête :
response.bodySize == 0 ET response.headersSize == 0 : A priori, je ne vois aucun cas où une réponse HTTP ne renverrait ni contenu ni header ? Peut être à cumuler avec response.content.size != 0 ? Car une requête avec un contenu mais sans body me semble assez peu concevable dans un autre cas ?
timings == {} : A priori, sans timing, une requête n'a pas été exécutée et est donc une "fausse" requête ?
time == 0 : Même constat qu'avant, a moins d'avoir une réponse instantanée d'un serveur ?
Qu'en pensez-vous ?
Cordialement,
Baptiste
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the HAR parsing and request-calculation entry points, then compare the Firefox cached-request example in this issue with a real network response. Check how response.bodySize, response.headersSize, cache, timings, and time are represented before deciding which evidence identifies a cached request. Done means cached entries no longer distort request counts, response sizes, or protocol calculations while ordinary requests remain included.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- devtools, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100