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

Mike Bishop <Michael.Bishop@microsoft.com> Wed, 13 July 2016 17:27 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 A084812B03C for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 13 Jul 2016 10:27:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.307
X-Spam-Level:
X-Spam-Status: No, score=-8.307 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-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 (1024-bit key) header.d=microsoft.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 PvA1Y4BoexPz for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 13 Jul 2016 10:27:02 -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 3454B12B02C for <httpbisa-archive-bis2Juki@lists.ietf.org>; Wed, 13 Jul 2016 10:27: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 1bNNs7-0001C5-Bu for ietf-http-wg-dist@listhub.w3.org; Wed, 13 Jul 2016 17:22:55 +0000
Resent-Date: Wed, 13 Jul 2016 17:22:55 +0000
Resent-Message-Id: <E1bNNs7-0001C5-Bu@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 <Michael.Bishop@microsoft.com>) id 1bNNs0-00017b-Pa for ietf-http-wg@listhub.w3.org; Wed, 13 Jul 2016 17:22:48 +0000
Received: from mail-dm3nam03on0132.outbound.protection.outlook.com ([104.47.41.132] helo=NAM03-DM3-obe.outbound.protection.outlook.com) by lisa.w3.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from <Michael.Bishop@microsoft.com>) id 1bNNrv-0002E5-Fx for ietf-http-wg@w3.org; Wed, 13 Jul 2016 17:22:48 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=kJ1lV8ab7rclKr8kNAHlKh6jDsDZE80b5m7XbICd3pI=; b=IzkMC/rKTkX1JIFYH2A/uvAjTvpMEvBbkmU5O8CfwCz9TPswA+SD/V6dBHJO+tzrQAajjWDSbHLAMHNK7oAw6C9+ZNYEPuHDarKZ80d2k0hhrUxTQrwx6pdv976cXaXjwQPI7Zo6JqZ/duBK3+e0mMNAhyxCwrevUSRhPdikSAo=
Received: from BL2PR03MB1905.namprd03.prod.outlook.com (10.164.115.25) by BL2PR03MB1908.namprd03.prod.outlook.com (10.164.115.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.539.6; Wed, 13 Jul 2016 17:22:15 +0000
Received: from BL2PR03MB1905.namprd03.prod.outlook.com ([10.164.115.25]) by BL2PR03MB1905.namprd03.prod.outlook.com ([10.164.115.25]) with mapi id 15.01.0544.004; Wed, 13 Jul 2016 17:22:15 +0000
From: Mike Bishop <Michael.Bishop@microsoft.com>
To: "Aaron L. Silvas" <asilvas@godaddy.com>, Martin Thomson <martin.thomson@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>
Thread-Topic: draft-asilvas-http-push-assets-00 comments
Thread-Index: AQHR3KGnXh6WaSgA2E+22xAao1B846AWjNyAgAAN+HA=
Date: Wed, 13 Jul 2016 17:22:14 +0000
Message-ID: <BL2PR03MB1905D71E920F456BB949BF4E87310@BL2PR03MB1905.namprd03.prod.outlook.com>
References: <CABkgnnVVja__isnUTmn3hgbNi8B=6FhYNnzwE+hAdxuS=WOHxw@mail.gmail.com> <CY1PR0201MB1594F2DD3ED98840BC9B9A7EB2310@CY1PR0201MB1594.namprd02.prod.outlook.com>
In-Reply-To: <CY1PR0201MB1594F2DD3ED98840BC9B9A7EB2310@CY1PR0201MB1594.namprd02.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=Michael.Bishop@microsoft.com;
x-originating-ip: [131.107.147.26]
x-ms-office365-filtering-correlation-id: c3ee4509-5a8b-4a84-9d8a-08d3ab423bff
x-microsoft-exchange-diagnostics: 1; BL2PR03MB1908; 6:vTHAF1oK6lvCS6oh63D74kXdMDi7sXpP2B0/c81uHtoDzdsaoFp/68sAN7QtjSkKi/GQUIKoESy7eOv6LfEoCjTYEi2DY6pa0OuVZ/Ful22lkEsgVTI4T4nn4ccDNncW09rbudKBAzy3j14YJDtQo27sg7o336423BV5YceF5QaOsWgw0M7Y+AjVdLCABC/LA1bog937qpPT5mw7zV1/q4pBEYaaq+t7NEkhAHmLv8S7W/tFS/CtF7SV3KjgMn3l2bO/sWSKhlnzBwZlPcPdUBSVuJcEAdeRPRY1gK6R0B24v981rgUCBAw67EV0Xq96Fnd9fTHEY6HzJ9B3abJ+aw==; 5:i/8hAtB9WGzwdugyiRQ5gstrtB2sS15IS71rkFessglucjyefyt/OSf0uTi7I10gq9zmDaMi5XWEVYo8eU0fKvW4sPtsArFccl1brfmzn+KeuKjPeuQmwraPZHjfSJ0BT2mbK7wNOeDQlzbzKHU1Lg==; 24:kspIGwFhREfhpm9yFd/nIKYbax7MIJhQLScMqHC+ljGpDn143hbu6g+Cxmfc7WzzaAbOAyT3Lg4GSrEWswoxrnSZxkAz029300kdS9e1kY8=; 7:MeUYerksYHYbIFHJEzS1uDA4YLQxjqlc3U247sSZRqzgoi5+q0vUCZIwcTk9Thng2dvdlMDOxYFr9sYgT5iEllF3053Co6fLlDXJtDPgaYdIAdcCI0pStOx7k/IPjpj/ZbqACoqULe8ZxHJgaYRU+ssXssolwQLm9HliqI4u5yWEPMXfWFpkGxPuvgOZo+WK0AlW538GzpfT6qRe1mqp+tKL22Y8oImWqsLm7N3EAzJMf55JxOIY3lX4dwt/hTXr
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB1908;
x-o365eop-header: O365_EOP: Allow for Unauthenticated Relay
x-o365ent-eop-header: Message processed by - O365_ENT: Allow from ranges (Engineering ONLY)
x-microsoft-antispam-prvs: <BL2PR03MB1908F835551315FAD02E88EF87310@BL2PR03MB1908.namprd03.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(158342451672863)(246761809553906)(21748063052155)(21532816269658);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(61425038)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(61426038)(61427038); SRVR:BL2PR03MB1908; BCL:0; PCL:0; RULEID:; SRVR:BL2PR03MB1908;
x-forefront-prvs: 000227DA0C
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(7916002)(189002)(43784003)(199003)(51444003)(377454003)(51914003)(92566002)(19625215002)(33656002)(87936001)(2900100001)(86612001)(101416001)(54356999)(68736007)(19300405004)(81166006)(76576001)(15975445007)(8936002)(189998001)(105586002)(81156014)(7846002)(66066001)(10090500001)(106356001)(3280700002)(107886002)(5001770100001)(5002640100001)(122556002)(2950100001)(7736002)(7696003)(3660700001)(5003600100003)(97736004)(106116001)(6116002)(19580405001)(790700001)(99286002)(16236675004)(19580395003)(230783001)(77096005)(74316002)(8666005)(3846002)(9686002)(102836003)(50986999)(76176999)(8676002)(561944003)(86362001)(8990500004)(10290500002)(10400500002)(2906002)(5005710100001)(586003)(11100500001)(7059030); DIR:OUT; SFP:1102; SCL:1; SRVR:BL2PR03MB1908; H:BL2PR03MB1905.namprd03.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts)
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_BL2PR03MB1905D71E920F456BB949BF4E87310BL2PR03MB1905namp_"
MIME-Version: 1.0
X-OriginatorOrg: microsoft.com
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jul 2016 17:22:14.9288 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB1908
Received-SPF: pass client-ip=104.47.41.132; envelope-from=Michael.Bishop@microsoft.com; helo=NAM03-DM3-obe.outbound.protection.outlook.com
X-W3C-Hub-Spam-Status: No, score=-4.1
X-W3C-Hub-Spam-Report: AWL=-2.568, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, W3C_NW=0.5
X-W3C-Scan-Sig: lisa.w3.org 1bNNrv-0002E5-Fx b78d145c0940678a66f15d3baf574a9b
X-Original-To: ietf-http-wg@w3.org
Subject: RE: draft-asilvas-http-push-assets-00 comments
Archived-At: <http://www.w3.org/mid/BL2PR03MB1905D71E920F456BB949BF4E87310@BL2PR03MB1905.namprd03.prod.outlook.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/31953
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>

This seems risky (and I'm presuming you mean "if no Server Push is performed").  The client assumes the resource is fresh if the server doesn't push it, even if it's showing as stale in the cache?  I'd prefer some form of positive signal, not only because it reduces the likelihood of implementation mistakes, but also because it lets the client get fresh lifetimes.  Pushing a 304 for the resource in cache seems cleaner, and still relatively cheap.

I think the fundamental new idea here is having the server proactively tag resources that it might push in the future, so the client can include only those resources in the data that it provides.

From: Aaron L. Silvas [mailto:asilvas@godaddy.com]
Sent: Wednesday, July 13, 2016 9:25 AM
To: Martin Thomson <martin.thomson@gmail.com>; HTTP Working Group <ietf-http-wg@w3.org>
Subject: Re: draft-asilvas-http-push-assets-00 comments


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<mailto: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.