Note that I could not see a way to reopen the issue so it remains
closed in Jira.

- Matt


2009/3/24 Matt Goodall (JIRA) <[email protected]>:
>
>    [ 
> https://issues.apache.org/jira/browse/COUCHDB-4?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12688643#action_12688643
>  ]
>
> Matt Goodall commented on COUCHDB-4:
> ------------------------------------
>
> The view etags are not unique enough to work correctly. If a database is 
> deleted and created with the same name, and the same number of documents is 
> added then the etag does not change and caching breaks. There needs to be 
> some database uid included in the etag.
>
> $ curl -X "PUT" http://localhost:5984/test
> {"ok":true}
> $ curl -X "POST" -d "{}" http://localhost:5984/test
> {"ok":true,"id":"9a59fd2772c04b75b9584fe48227e55b","rev":"1-2431529710"}
> $ nc localhost 5984
> GET /test/_all_docs HTTP/1.0
>
> HTTP/1.0 200 OK
> Server: CouchDB/0.9.0a (Erlang OTP/R12B)
> Etag: "40KWB93PS9PRNQP491WC04H50"
> Date: Tue, 24 Mar 2009 10:51:27 GMT
> Content-Type: text/plain;charset=utf-8
> Cache-Control: must-revalidate
>
> {"total_rows":1,"offset":0,"rows":[
> {"id":"9a59fd2772c04b75b9584fe48227e55b","key":"9a59fd2772c04b75b9584fe48227e55b","value":{"rev":"1-2431529710"}}
> ]}
> $ curl -X "DELETE" http://localhost:5984/test
> {"ok":true}
> $ curl -X "PUT" http://localhost:5984/test
> {"ok":true}
> $ curl -X "POST" -d "{}" http://localhost:5984/test
> {"ok":true,"id":"6c4e1a7b9a8442beaa6065489bfe0d0b","rev":"1-4205788982"}
> $ nc localhost 5984
> GET /test/_all_docs HTTP/1.0
>
> HTTP/1.0 200 OK
> Server: CouchDB/0.9.0a (Erlang OTP/R12B)
> Etag: "40KWB93PS9PRNQP491WC04H50"
> Date: Tue, 24 Mar 2009 10:52:01 GMT
> Content-Type: text/plain;charset=utf-8
> Cache-Control: must-revalidate
>
> {"total_rows":1,"offset":0,"rows":[
> {"id":"6c4e1a7b9a8442beaa6065489bfe0d0b","key":"6c4e1a7b9a8442beaa6065489bfe0d0b","value":{"rev":"1-4205788982"}}
> ]}
>
>
>> Use HTTP Etags for cache support
>> --------------------------------
>>
>>                 Key: COUCHDB-4
>>                 URL: https://issues.apache.org/jira/browse/COUCHDB-4
>>             Project: CouchDB
>>          Issue Type: Improvement
>>          Components: HTTP Interface
>>            Reporter: Noah Slater
>>            Assignee: Chris Anderson
>>            Priority: Blocker
>>             Fix For: 0.9
>>
>>
>> CouchDb currently puts a number of headers in HTTP responses that disable
>> any caching. However, the docid and rev that are part of every document
>> would make it extremely easy to instead generate solid Etag headers, and
>> then return 204 Not Modified responses for GET and HEAD requests if the
>> client sends along the most current Etag value.
>> For example, instead of:
>> HTTP/1.1 200 OK
>> Server: inets/develop
>> Date: Sat, 15 Sep 2007 11:21:41 GMT
>> Cache-Control: no-cache
>> Pragma: no-cache
>> Expires: Sat, 15 Sep 2007 11:21:41 GMT
>> CouchDB should return something like:
>> HTTP/1.1 200 OK
>> Server: inets/develop
>> Date: Sat, 15 Sep 2007 11:21:41 GMT
>> Cache-Control: must-revalidate
>> Etag: ${doc...@${rev}
>> Sufficiently sophisticated clients (such as Python httplib2) could then use
>> If-None-Match to perform conditional GET requests.
>> Thinking about it again, as the docid is already in the URL, only the rev
>> is needed in the Etag headers.
>> --
>> Comment 1 by [email protected], Oct 01, 2007
>> See also 
>> http://intertwingly.net/blog/2007/09/24/Tests-Id-Like-CouchDB-to-Pass#etag
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>

Reply via email to