If you are using a Tk::Canvas, and you want reload speed, the thing to do is base64 encode the image and store it in a hash. Why? Because the Tk::Photo widget will automatically base64encode images, whether you load them from a file or inline variable. So.... to avoid the repeated base64encoding, do it once and save it. See
Tk-thumbnail-viewer In this script, the images take a bit of time the first time a directory is loaded, as the files are encoded; but on subsequent loading, it is fast.
That is about all you can do, unless you want to use ImageMagick to convert the images to lower quality files and reduced colors, which isn't very useful considering today's computer speed and display power.