Browsers are pretty smart when it comes to caching.It should only ask for it once.
Additionally when it asks the server for an image, it usually sends with the request for the image, a couple of headers that tell the server.. Hey, I want this image, but I got one already that has these attributes that you told me about it last time you sent it to me.
The server can then respond with a 200
meaning it’s different content 304
meaning the one you have is the same, so I won’t send it again, use the one you got..
One of these methods uses an ETAG header, but there are a few more.
Your server needs to support this, but most do.
Additionally, the interweb is made up of a bunch of caches, which will also look at these sort of header values and return stuff for you.. That’s why the web scales so well 😉