I can't reproduce this here, and I wouldn't really expect to. $read re-opens the file for each call and doesn't keep any kind of cache to my knowledge.
It's more likely to be a problem with your script. If you're calling $read on a timer make sure it's evaluated when the timer fires, not when you start it. The same goes for other commands, notably /scon.
For example, this would read a random line from
versions.txt before starting the timer and then send it to #channel twice:
alias readtest {
.timer 2 5 msg #channel $read(versions.txt,n)
}
Whereas this would read a random line from
versions.txt each time the timer fires:
alias readtest {
.timer 2 5 msg #channel $!read(versions.txt,n)
}