file(): fix reuse of previous file object instead of source file object
serve(): respond 304 Not Modified, when if-none-match request header matches etag