Etag не самый удачный вариант, браузеру все равно придется ходить на сервер и сравнивать значения этого заголовка. Я бы предложил exires или cache-control max-age (они равноценны). Если фаил планируется менять в будущем, то после прогона его через минимизатор/обфускатор выставил бы результату название в виде хэша от содержимого, чтобы в случае его изменения сменился бы урл и браузер перезапросил ресурс.