Storing a texture in a variable instead of an asset reference to a texture

I have a client script that cycles through some textures to give an animated water effect; currently the textures are updated with a loop that changes the texture reference e.g.

waterTexture.Texture = string.format("rbxasset://textures/water/normal_%02d.dds", i)

This seems like a poor strategy - or is it somehow cached?

I’ve considered preloading 25 textures and then making one opaque at a time. Really I would like to create a table of pre-loaded texture assets and just cycle it. Any thoughts?