The first approach is to prefix the file names with a version-release string, and create symlinks to the files during installation or the first execution. Many systems have a version identification mechanism.
To manage the symlinks, the following could be used:
httpd.conf (or equivalent)
Timestamp Management Code (PHP)
Once the timestamp is set, it is cached in the cache/timestamp file. In this system, the cache is cleared when new releases are installed, so the absence of the timestamp file ensures an update and a new set of requested files.
The timestamp can applied to .js and .css file requests like so: