Comments (6)
Thanks, I'm not too familiar with ALPS, so I'll review that and see if it looks like a better fit for doing the negotiation. It would be great if we could avoid sending the uneeded PatchRequest to a range request only server (so long as we're not adding any extra round trips to do so).
from ift.
I've reviewed ALPS and I have a couple concerns:
- Since ALPS is part of TLS it works at the connection level. Connections are made to a specific domain and under that domain there may be more than one actual servers processing requests depending on the specific patch requested. Having a frame in ALPS that opts in to patch subset would opt int all paths under that domain, which in many cases may not be ideal (eg. a CDN which serves assets for many different users from the same domain).
- Using ALPS could complicate implementations where SSL termination is not happening at the same place where the HTTP request is being processed. Again thinking of the example where SSL termination is happening at a single place for a domain but specific paths under that domain are served by completely different servers.
I think then if we want to go down this path, we should make the use of a SETTING via ALPS optional. That is, define a server sent SETTING which instructs the client to only use range request. If the client does not receive that setting it will use the currently specified behaviour of including the PatchRequest message in the first request + fallback to range request depending on the server's response. If it does receive the setting then the client would omit the PatchRequest message from the first request. This then gives a mechanism to servers that don't support patch subset to have clients avoid sending them an unnecessary PatchRequest.
The good news is it looks like we are free define a custom setting identifier under HTTP3 (https://www.rfc-editor.org/rfc/rfc9114.html#name-defined-settings-parameters) as an extension.
@litherum do you have any thoughts?
from ift.
- a CDN which serves assets for many different users from the same domain
I wouldn't expect CDNs to opt-into patch processing unless they are planning to actually process patches on behalf of their customers. (which AFAIU, they could)
I think then if we want to go down this path, we should make the use of a SETTING via ALPS optional
Adding ALPS as an optional optimization makes sense, where an explicit value from the server opts-in the client to either range-requests or patches, and lack of explicit setting falls back to the currently defined negotiation scheme.
from ift.
Should be fixed by #113. Please reopen if you still have concerns with the new method negotiation introduced by that PR.
from ift.
I think that a CSS based selection may be less aligned with the server's capabilities, but at the same time, it's better than the previous method. May be interesting to keep in mind the possibility of a lower-level negotiation protocol as a future extension.
from ift.
Completely agreed.
from ift.
Related Issues (20)
- Add QUERY as a HTTP method type used for patch subset. HOT 1
- IFT and offline reading HOT 3
- Privacy Considerations says checksum is for error correction
- Condisderation HOT 1
- Can't generate html HOT 5
- Compremised
- Rewrite explainer HOT 6
- Different URL ID encoding HOT 13
- Encoder requirements questions/issues HOT 2
- Partial invalidation brotli patches? HOT 1
- Mixing patch types and GID "management" HOT 2
- Aspects of streamed decoding on the client side
- Possible "all other codepoints" semantic? HOT 4
- Wide Review of 9 July WD of IFT HOT 8
- Security self-review answers for 9 July 2024 WD of IFT
- I18n checklist answers for 9 July WD of IFT
- Document serializing/caching of patched font HOT 3
- Should we require Erroring on Validation Requirements for Format 1 Patch Map? HOT 6
- Consistently use `code point` instead of sometimes saying `codepoint` HOT 2
- Considerations for "desiccated" initial font files HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ift.