Come altri hanno detto, se l'host del cookie, percorso, ecc restrizioni sono soddisfatte, sarà inviato, 50 volte.
Ma hai anche chiesto il motivo: perché i cookie sono una funzionalità HTTP e HTTP è senza stato. HTTP è progettato per funzionare senza che il server memorizzi uno stato tra le richieste.
Infatti, il server non ha un solido modo di riconoscere quale utente sta inviando una determinata richiesta; ci potrebbe essere un migliaio di utenti dietro un singolo proxy web (e quindi un indirizzo IP). Se i cookie non sono stati inviati ogni richiesta, il server non avrebbe modo di sapere quale utente sta richiedendo qualsiasi risorsa.
Infine, il browser non ha idea se il server ha bisogno o meno dei cookie, solo sa che il server ha richiesto di inviare il cookie per qualsiasi richiesta a foo.com, quindi lo fa. A volte le immagini ne hanno bisogno (ad esempio, per utente generato dinamicamente), a volte no, ma il browser non può dirlo.
Non penso che il caching sia possibile in questa situazione - stiamo parlando del browser che invia i dati al server, non viceversa. Non si può dire con certezza che il server "lo abbia già" dopo che l'utente ha inviato una richiesta, per molti motivi. Ci può essere un gran numero di server che non parlano tra loro; il server potrebbe non volere (o avere spazio) di ricordare nulla delle precedenti richieste - HTTP dovrebbe essere senza stato; ogni richiesta dovrebbe essere indipendente dal resto. Per questo motivo, i cookie, come le credenziali di autenticazione, devono essere inviati ad ogni richiesta. –