You need to use far-future expiration date on all resources given in manifest's CACHE section. In addition, add timestamp suffix to each file in the CACHE section −
CACHE: menu_1355817388000.js toolbar_1355817389100.js
When any of the file change on the server, to change the timestamp, you need to update the manifest. The file with the modified timestamp downloaded the next time.