Express adds an ETag by default if you use `response.send` (if you stream data with `write`, then it's too late to add header by time we can compute an ETag). But it conditions on length, and we may want to factor this code out to apply it elsewhere, so we compute our own ETag as a fallback.

We only cache ETags for an hour. So if the content has changed, we'll eventually hit the database again, send that new data, and compute a new ETag. Parcel data should not change very often, so an hour seems safe. If we update the parcel data while people are out surveying, they won't see the changes immediately, but that seems unlikely. If we're testing and want to see the new data immediately, we can ask the browser to do a "hard refresh" (or clear the browser cache), in which case it will not send an `If-None-Match` header. We can also cycle the server: the ETag cache is not persistent.