basic etag/if-none-match support