Re: draft-asilvas-http-push-assets-00 comments

Alcides Viamontes E <alcidesv@zunzun.se> Wed, 13 July 2016 17:21 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 (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DF37C12D188 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 13 Jul 2016 10:21:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.207
X-Spam-Level:
X-Spam-Status: No, score=-8.207 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.287, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=zunzun-se.20150623.gappssmtp.com
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 FYr4SNc5LF5k for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 13 Jul 2016 10:21:05 -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 3550712D16C for <httpbisa-archive-bis2Juki@lists.ietf.org>; Wed, 13 Jul 2016 10:21:02 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.80) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1bNNmN-0006iG-VD for ietf-http-wg-dist@listhub.w3.org; Wed, 13 Jul 2016 17:17:00 +0000
Resent-Date: Wed, 13 Jul 2016 17:16:59 +0000
Resent-Message-Id: <E1bNNmN-0006iG-VD@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <alcidesv@zunzun.se>) id 1bNNmI-0006hK-VV for ietf-http-wg@listhub.w3.org; Wed, 13 Jul 2016 17:16:55 +0000
Received: from mail-oi0-f53.google.com ([209.85.218.53]) by lisa.w3.org with esmtps (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <alcidesv@zunzun.se>) id 1bNNmF-0001y5-Tc for ietf-http-wg@w3.org; Wed, 13 Jul 2016 17:16:54 +0000
Received: by mail-oi0-f53.google.com with SMTP id j185so73714850oih.0 for <ietf-http-wg@w3.org>; Wed, 13 Jul 2016 10:16:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zunzun-se.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=R/Jemy/MvDcHaGlgjJFqysXKT4K9S+WJ3F/LA8XDY/0=; b=Q0GMbjZUJsIShmDkuJK6HKfbwGOC1/f6MbkJ5k9YIm0Omjlv+SorSYY+qLekeSJze6 hVur2F/WRN2FlPGCXreAJZdd8tPDWeqhU+9ieiYo3PAL8IQgaw+Dq75KId86e2S8kEtv Xjnlv4wE2oJ2hhhF3j96CfPmYmTbQ42WhCV/Nh+ZmgV82V45MkoO3HJB+/yTLkoxiO0G O2O4fnzJXlohT2FJFxD8zrU1XkKaYHeQpYZrCNMz7ZXgyxtgRzrAQZ6Xh1VZ7TKJPB3q nGgUXBu6mBjrXNcXEG3KnzFcL+NtI/lNRw5+AEgKOluAL/ospxYXHZ13hCYLiEXyPPPy YuhA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=R/Jemy/MvDcHaGlgjJFqysXKT4K9S+WJ3F/LA8XDY/0=; b=U51Rlxeo2ZJzuOVo1rAd4bZnLgEt7jax4JXOhAWh6CUfXWPd+AyCrenpKIgXvtXeJ/ Hil7Xm/py/ES8uJQzg8ky09JG8ZgDKMOuJo7sqk1bheDygjPJdyjfJ7imHaNdcF+gcUU U2TRSrK3/sw5O2xkZU+sr3CTjnPs+sBniW6ESgrVwn982ye/CqiVFeHydUxsWy58Y3at V9ABLa9peKrkDh3HlGnMncCVoUaZZyQPPayGWl9rzuuBuC4GdwL0jzBZYZXzBXmphUTh 3LIkxv8x5s56wXTgfbvmUoH/O8ZmG6tP7iWl0BV/8km9/m0qJp8LUfRrEU89Nl41fnmF HaJg==
X-Gm-Message-State: ALyK8tJK5gciF1aEVcnQnOan9L3TnA6AjgaIZJj679HOyTcVbUEkVEGNOTvrEecG8fqJ6+Iy0GfdzHS8o5dImQ==
X-Received: by 10.157.11.7 with SMTP id a7mr5449286ota.150.1468430185439; Wed, 13 Jul 2016 10:16:25 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.202.204.18 with HTTP; Wed, 13 Jul 2016 10:16:24 -0700 (PDT)
In-Reply-To: <CY1PR0201MB1594F2DD3ED98840BC9B9A7EB2310@CY1PR0201MB1594.namprd02.prod.outlook.com>
References: <CABkgnnVVja__isnUTmn3hgbNi8B=6FhYNnzwE+hAdxuS=WOHxw@mail.gmail.com> <CY1PR0201MB1594F2DD3ED98840BC9B9A7EB2310@CY1PR0201MB1594.namprd02.prod.outlook.com>
From: Alcides Viamontes E <alcidesv@zunzun.se>
Date: Wed, 13 Jul 2016 19:16:24 +0200
Message-ID: <CAAMqGzZG=93-bXJVHxjBmjLyVy5e-q5AMUtvbXPah2XrGs5NMg@mail.gmail.com>
To: "Aaron L. Silvas" <asilvas@godaddy.com>
Cc: Martin Thomson <martin.thomson@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>
Content-Type: multipart/alternative; boundary="001a113cd46094dc320537878bde"
Received-SPF: pass client-ip=209.85.218.53; envelope-from=alcidesv@zunzun.se; helo=mail-oi0-f53.google.com
X-W3C-Hub-Spam-Status: No, score=-5.4
X-W3C-Hub-Spam-Report: AWL=-0.818, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: lisa.w3.org 1bNNmF-0001y5-Tc d83f3c48b8372ba0597a2ebe169588a8
X-Original-To: ietf-http-wg@w3.org
Subject: Re: draft-asilvas-http-push-assets-00 comments
Archived-At: <http://www.w3.org/mid/CAAMqGzZG=93-bXJVHxjBmjLyVy5e-q5AMUtvbXPah2XrGs5NMg@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/31952
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 Aaron,

I'm also very interested on understanding your proposal better. I have read
your draft and then have followed the questions asked on this list  and now
your clarifications. However, neither your examples in the draft nor your
latest email have helped me. Could you please repeat your examples with
full request/response headers and with annotations about which requests are
part of a PUSH_PROMISE?

You mention that "browser and server adhere to a strict dependency state
contract".... can you describe this contract?  Compared with the situation
today, what are the major differences?

Thanks in advance,

./Alcides.



On Wed, Jul 13, 2016 at 6:24 PM, Aaron L. Silvas <asilvas@godaddy.com>
wrote:

> Thanks for the feedback, Martin. I agree the document needs work to better
> clarify things.
>
>
> I'll attempt to address your comments here, in hopes of striking further
> conversation on the topic.
>
>
> "Push-Assets" is the only *request* header; required only if the client
> wishes to enable the full HTTP/2 Push-Assets flow as outlined in the draft.
> If the server does not support/understand the header, it is benign. This
> allows the client to inform the server of its cache state, for push-enabled
> assets only (unlike Cache Digest HTTP/2 proposal which sends everything).
> This header includes the exact state of each of these resources, as if they
> were individually requested, and thus supports existing etag and
> last-modified headers. Not only will the server know what resources the
> client does and does not have, but it will also know which resources are
> simply out of date and must still be pushed. The server won't even need to
> send a 304 (Server Push) response for unmodified resources, as the server
> knows the state of the clients push-enabled assets, and the client can
> assume "no change" if Server Push is performed on the given resources. This
> effectively means that the server will only ever send what is missing or
> changed, no more, no less.
>
>
> Example (requests only to keep length of email to a minimum):
>
>
>   GET /page1
>
>   Push-Assets: *
>
>
>   GET /page2
>   Push-Assets: md5(shared-resource1.js)=etag(123456)
>
>
> "Push-Asset-Key" is an *optional* *response* header. It allows the server
> to "name" a resource, allowing it to renamed at a later time without worry
> of having to refetch unnecessarily. By default, the "key" of every resource
> is the URI Path, minus any querystring parameters.
>
>
> "Push-Asset-Key" is also a *required* *PUSH_PROMISE* header, which is
> likely part of the confusion. Being a PUSH_PROMISE is essentially the
> server delivering a request on its behalf, this header field informs the
> client that this resource should be tracked as a "Push-Asset" (aka
> push-enabled). The key itself is what uniquely identifies the resource, and
> will typically be the URI Path of the resource, minus querystring
> parameters, but in MD5 form. The client will only ever provide client cache
> state of resources that have responded with this header field, as they are
> "push-enabled". This gives the server control of what state it should or
> should not track for the purpose of Server Push resources.
>
>
> "Push-Asset-Match" is an *optional* *response* header. This effectively
> allows the server to inform the client that a given resource is only used
> within specific "buckets" of matching URI's. This is especially useful for
> large or complex domains, such as CDN's, or other multi-app-per-domain
> scenarios.
>
>
>
> I'll continue to collect feedback, and especially suggestions, and update
> the next draft accordingly. Thanks again for the interest.
>
>
>
>
> -aaron
>
> ------------------------------
> *From:* Martin Thomson <martin.thomson@gmail.com>
> *Sent:* Tuesday, July 12, 2016 5:52:49 PM
> *To:* HTTP Working Group; Aaron L. Silvas
> *Subject:* draft-asilvas-http-push-assets-00 comments
>
> First, I think that there is an interesting idea hidden in here.  It
> could be that it's complementary to the more generic digests idea.
>
> However, I found it impossible to determine how this document is
> claiming to achieve its stated goals.  None of the examples include
> header fields, which would have gone a long way to explaining this.
> The new header fields don't really say what each is used for.  That
> leaves me guessing about how this fits together.
>
> Here's my best guess, though I have to confess that I can't connect
> this to what Section 4 says:
>
> On request N.  A server provides a new header field with responses
> that create a secondary identifier for resources.  I'm really guessing
> here, but I assume that unlike etag, this header field includes a
> value that is the same for a group of resources.
>
> On request >N. Clients include a new header field with requests that
> controls what is pushed.  If it includes '*', then everything is
> pushed.  If it includes 'no-push', then nothing is pushed.  If it
> includes a list of these new push-asset-keys, then anything matching
> those keys is not pushed.
>
> Based on this, I'm fairly certain that I don't understand the
> proposal, because this design doesn't require both Push-Asset-Key and
> Push-Asset-Match header fields.  I'm clearly missing something.
>
> I did start to look at the code, but without a better overview of what
> it aims to achieve, I'm afraid that I'm not going to get much from it.
>



-- 
Alcides Viamontes
www.shimmercat.com