Github user ngorchilov commented on a diff in the pull request:

    https://github.com/apache/trafficserver/pull/330#discussion_r44505183
  
    --- Diff: proxy/http/HttpTransactCache.cc ---
    @@ -1299,7 +1299,7 @@ 
HttpTransactCache::match_response_to_request_conditionals(HTTPHdr *request, HTTP
           ink_time_t lm_value = response->get_last_modified();
     
           // we won't return NOT_MODIFIED if Last-modified is too recent
    -      if ((lm_value == 0) || (request->get_if_modified_since() < 
lm_value)) {
    --- End diff --
    
    Why Akamai are using such technique is beyond my knowledge, but regarding 
ATS logic I have the following comments/opinion:
    
    1. when running in forwarding mode, especially in TPROXY, it shall be as 
less intrusive as possible, instead of being standards enforcement facility and 
breaking unknown (but in tens if not hundreds of thousands) number of 
services/sites that are working somehow otherwise.
    
    Imagine the case (our use case, actually) when running in transparent 
forwarding mode for ISPs ranging from few tens of thousands to few million 
subscribers. End-users don't care if their ISP is willing to save some 
bandwidth or not. They call the customer support and complain - this online 
facility works for me via your competitor, make it work for me or I quit.
    
    If ATS community is serious to support forwarding mode, it shall follow the 
logic of best commercial solutions - PeerApp or alike - they NEVER break 
services intentionally, just because they can :)
    
    2. Regarding If-modified-since - I don't think standards somehow imply that 
server MUST respond with 304. Especially with the edge case of 
If-modified-since equal to Last-modified - it’s pretty legit and unavoidable 
race condition - while I (the server) started serving you the last version some 
other subprocess finished updating the object in the very same second.
    
    IMHO, ATS shall forward the 200 response, especially if triggered by client 
If-modified-since, not by IMS, at least while running in 
proxy.config.http.cache.when_to_revalidate = 4, if this makes any difference.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to