In my GAE app I have the following handler in app.yaml:
- url: /lang/strings.js script: js_lang.py
So a call to /lang/strings.js
/lang/strings.js
Have a look at Static serving blog post by Nick.
There's everything you need to know about Conditional request and how to properly get and set the correct HTTP headers:
If-Modified-Since
If-None-Match
Last-Modified
ETag