Re: Proposed HTTP SEARCH method update

Ashok Malhotra <ashok.malhotra@oracle.com> Sun, 26 April 2015 15:56 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 23C601B2AD4 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 26 Apr 2015 08:56:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.012
X-Spam-Level:
X-Spam-Status: No, score=-5.012 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YZGHeTNnb_JY for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 26 Apr 2015 08:56:37 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9EBB81B2AD3 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Sun, 26 Apr 2015 08:56:37 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.80) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1YmOqf-0002Sy-Av for ietf-http-wg-dist@listhub.w3.org; Sun, 26 Apr 2015 15:52:01 +0000
Resent-Date: Sun, 26 Apr 2015 15:52:01 +0000
Resent-Message-Id: <E1YmOqf-0002Sy-Av@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.80) (envelope-from <ashok.malhotra@oracle.com>) id 1YmOqZ-0002S1-Ma for ietf-http-wg@listhub.w3.org; Sun, 26 Apr 2015 15:51:55 +0000
Received: from aserp1040.oracle.com ([141.146.126.69]) by maggie.w3.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from <ashok.malhotra@oracle.com>) id 1YmOqY-0006tU-86 for ietf-http-wg@w3.org; Sun, 26 Apr 2015 15:51:55 +0000
Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id t3QFpO9e018823 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 26 Apr 2015 15:51:24 GMT
Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserv0021.oracle.com (8.13.8/8.13.8) with ESMTP id t3QFpNfV027278 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Sun, 26 Apr 2015 15:51:24 GMT
Received: from abhmp0005.oracle.com (abhmp0005.oracle.com [141.146.116.11]) by aserv0121.oracle.com (8.13.8/8.13.8) with ESMTP id t3QFpNFG018066; Sun, 26 Apr 2015 15:51:23 GMT
Received: from [10.154.113.153] (/10.154.113.153) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 26 Apr 2015 08:51:23 -0700
Message-ID: <553D097A.9060905@oracle.com>
Date: Sun, 26 Apr 2015 11:51:22 -0400
From: Ashok Malhotra <ashok.malhotra@oracle.com>
Reply-To: ashok.malhotra@oracle.com
Organization: Oracle Corporation
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0
MIME-Version: 1.0
To: "henry.story@bblfish.net" <henry.story@bblfish.net>, Julian Reschke <julian.reschke@gmx.de>
CC: Mark Nottingham <mnot@mnot.net>, James M Snell <jasnell@gmail.com>, ietf-http-wg@w3.org
References: <DEEC7135-C5AD-402C-B592-D9F735242C4A@bblfish.net> <5532C62B.3080108@oracle.com> <ABC8CB5C-0152-4CDD-ABA4-08878162B2E0@bblfish.net> <CABP7Rbf2sNq+HUTG1V769SGUN5SxvKMHi9VS2K3B-kZGDLcQPA@mail.gmail.com> <BA9C8760-E9D2-4139-ACD3-14B47106671A@mnot.net> <B2A55DFD-7847-461E-ADCB-7272B63E19B8@bblfish.net> <248DAEB5-D983-47A3-AB10-1393B4991868@mnot.net> <38B851F8-F102-40D1-927E-56698BC605E0@bblfish.net> <3C5DD81E-2D57-4DDD-860D-7B81C2DA7084@mnot.net> <E7294216-06F9-433C-8258-DDE11AD0A988@bblfish.net> <553CAD43.4000202@gmx.de> <30026A40-487C-42AD-BB61-442C7228EFB4@bblfish.net>
In-Reply-To: <30026A40-487C-42AD-BB61-442C7228EFB4@bblfish.net>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Source-IP: aserv0021.oracle.com [141.146.126.233]
Received-SPF: pass client-ip=141.146.126.69; envelope-from=ashok.malhotra@oracle.com; helo=aserp1040.oracle.com
X-W3C-Hub-Spam-Status: No, score=-7.7
X-W3C-Hub-Spam-Report: AWL=1.629, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, W3C_AA=-1, W3C_DB=-1, W3C_IRA=-1, W3C_IRR=-3, W3C_WL=-1
X-W3C-Scan-Sig: maggie.w3.org 1YmOqY-0006tU-86 8a9f559d94cab217dd1f2b39faa86337
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Proposed HTTP SEARCH method update
Archived-At: <http://www.w3.org/mid/553D097A.9060905@oracle.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/29391
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

Hello Henry:
I understand that you want intelligent caches that use knowledge about the
resource and the results.  This is a fine goal but our priority now is to get
the SEARCH proposal accepted with the existing infrastructure. Let's work on
getting that done.  Then we can work on intelligent caching.
All the best, Ashok
On 4/26/2015 6:52 AM, henry.story@bblfish.net wrote:
>> On 26 Apr 2015, at 11:17, Julian Reschke <julian.reschke@gmx.de> wrote:
>>
>> On 2015-04-26 07:40, henry.story@bblfish.net wrote:
>>> ...
>>> Great!  We are getting closer to the core of the problem, which I had tried to address earlier :-)
>>>
>>> I agree that HTTP caching should operate upon representations of resource state. My point it that SEARCH always returns a partial representation of the resource state, so that it should be cachable too. This means
>>> improving the caching stack so that it knows how to update partial representations.
>> And you seriously believe that people are going to upgrade their caching stack specifically for SEARCH?
> I suppose you are talking about more difficult to change caching stacks like those deployed by ISPs or even countries. ( In 1994 I remember the UK had a country wide cache to help us get pages from the  USA faster ). Those caches will presumably only change when the need for it is strong enough. Luckily they don't have to change those services until they feel like it.
>
> What will happen immediatley though is that people like me and others on this list, will write  local JS caches for data using any of the numerous storage mechanisms available in browsers.  We will also write servers that can implement SEARCH for local and remotely proxied resources, as I have partly done here in Scala here
>
>    https://github.com/read-write-web/rww-play/wiki/Curl-Interactions#sparql-queries
>
> Some people may wish to implement SEARCH for XML query languages, other for CSV formats, others for JSON, etc. I'll be doing something for JSON-LD.
>
> But we might as well write the spec for SEARCH in such a way that when the market grows enough that the large infrastructure companies will want to buy new enhanced proxies tuned for the languages that are most used ( probably nothing to do with what I am doing ) to improve the service for their customers, that these can then together with the stacks the initial group has deployed to satisfy their more limited needs.
>
>>> To illustrate the different cases, let us take the example from http://datatracker.ietf.org/doc/draft-snell-search-method/ . The resource <http://example.org/contacts> is a small table of contacts.
>>> Let us imagine that
>>>
>>> A. GET followed by SEARCH
>>> -------------------------
>>>
>>> 1. James makes a GET request on <http://example.org/contacts> via a cache C and C caches the returned  representation with etag1 ( and the same Location header )
>>> 2. Ashok then makes a conditional SEARCH request on <http://example.org/contacts> via the same cache C with etag1 too
>>>
>>> I think it is important that SEARCH guarantee the following:
>>>
>>> it should not be necessary for the cache C to send the search request all the way back to the server example.org if it knows the query lanuage used in the SEARCH request, because it should be able to answer that
>>> itself using the information from the GET in 1. above.
>> That not only implies that caches special-case the SEARCH method, but also know the semantics of SEARCH payloads.
> yes, and I am just building a client Scala-JS store and a server Scala store to do that for a couple of query formats, under the Apache licence.
>
>>> ...
>>
>> I'd prefer to concentrate on the concrete method definition first.
>>
>> As Mark said, once you leave the world of GET and HEAD, standard caches won't help you anymore.
> Yes, but I am not relying on standard caches. I am writing in-browser and server caches myself. The server caches are needed anyway because of the limitations of CORS.
>
>> Of course a server can indicate that a specific SEARCH response is indeed cacheable (cache-control!), but it's unlikely that generic caches will start to implement that.
>>
>> If what's needed is a mechanism to discover GETtable resources that implement a specific query, something like <https://greenbytes.de/tech/webdav/draft-reschke-http-get-location-latest.html> might be needed.
> It is important for me that the query be made directly on the resource, and that it be clear to the intermediate caches that the results are partial views on that resource, so that the intelligent cache can built these partial views together into ever more complete ones.
>
>> Best regards, Julian
> Social Web Architect
> http://bblfish.net/
>