Best practices for inducing AJAX application front-end refreshes
I develop and maintain several web applications for internal use at my company. They are all PHP/MySQL-based with HTML/JavaScript front-ends utilizing jQuery and various plugins for UI elements, grid displays, AJAX, etc.
An issue that I'm constantly facing is that the users generally leave their browsers open for days at a time, with a tab for each application that they generally don't close unless they shut down their whole system. Consequently, every time I make a change to a JavaScript or PHP/HTML skeleton file, users do not get the updated scripts until they restart their browsers or press F5.
Every time I mention to a user that there will be an update going out overnight, I inevitably get a perplexed call the next morning asking why they're not seeing the changes. Every time, my answer is "try pressing F5," but it hasn't sunk in with any of the users. I don't expect users to know how web apps work in a technical sense - after all, that's MY job, not theirs. I can't expect them all to instinctively know to refresh the application before calling me, and to not expect any aspect of the front end to magically change unless they do so, although that would be nice.
I'm thinking of implementing a rudimentary solution where I will have the applications refresh themselves in the middle of the night at a certain time, probably shortly after the cron job that moves updated scripts from the "good to go" staging area to production. I'm sure this will work, but there has got to be a better way. Has anybody run into this problem and implemented a more clever solution than a simple scheduled refresh?