Thank you! These are interesting ideas! For both of these suggestions, I think I will need a look-up table using the remote file paths as keys, the local copy paths as values.
But is it theoretically possible to have two remote file paths sharing the same local copy file name? i.e. `make-temp-file' generates the same temporary file name for two separate calls?
If such a situation occurs, then: (1) the local copy of one remote image will be overwritten by another (2) it is wrong to try to update the local copy based on the time stamp of a wrong remote file.
As far as org-mode is concerned, and assuming the current stable version of tramp, I think there are two options (1) the current approach which preserves the path of the remote file and therefore avoid unnecessary downloads; however we forgo the capability of compression that tramp's file-local-copy offers, (2) use `file-local-copy' but risk overwriting (albeit unlikely) downloaded local copy; this is possible with or with out a look-up table for reusing files.
And yes, for those who prefer seeing an empty box instead of downloading remote images for display, I will add an option for turning this functionality ON/OFF, default off maybe.
Thanks,
Kit