problem solved:
the problem is due to that a new file (16k) replaced the old one (2.03k), and the cache only refreshed the file content, but not the file size, so if the file cache is not expired, client may get the right file but the wrong size, which cause the file to be truncated.
thx B.R, again