@SuppressWarnings("deprecation")
	private void _sendExistFileToClient(File fp, Request req, Response resp) throws IOException {
		long content_length = fp.length();
		String etag = generateETag(fp);
		boolean cached = false;
		resp.setHeader("Content-Length", Long.toString(content_length));
		
		resp.setHeader("Last-Modified", new Date(fp.lastModified()).toGMTString());
		resp.setHeader("Etag", etag);
		
		String header_str = resp.encodeHeader();
		OutputStream os = resp.getOutputStream();
		//send header
		os.write(header_str.getBytes());
		InputStream fis = null;
		byte[] buf = null;
		if(content_length < this.getBufferSize()){
			Object ref = cache.retive(etag);
			if(ref != null){
				buf = (byte[])ref;
				cached = true;
			}else{
				buf = new byte[this.getBufferSize()];
			}
		}else{
			buf = new byte[this.getBufferSize()];
		}
		
		try {
			if(!cached) {
				fis = new BufferedInputStream(new FileInputStream(fp));
				int numr = 0;
				while((numr = fis.read(buf)) > 0) {
					if(content_length < this.getBufferSize())
						cache.cache(etag, buf);
					os.write(buf, 0, numr);
				}
			} else {
				os.write(buf, 0, (int) content_length);
			}
			os.flush();
		} catch(IOException ex) {
			throw ex;
		} finally {
			if(fis != null) fis.close();
		}
	}