Hi David, Objects are not fetched from ATS via browser. ATS is just internal cache. Only problem is to trick ATS into believing that object is always fresh, never stale. I wonder if modifying headers before ATS (READ_RESPONSE_HDR_HOOK) removing or changing Expires and/or adding max-age to some very big value might be right way to go for me.
Veiko 2017-11-23 17:52 GMT+02:00 David Carlin <[email protected]>: > Have you considered adding "Cache-Control: Immutable" to these objects > which will never require re-validation? This will prevent the browser from > attempting an If-Modified-Since request. > > https://hacks.mozilla.org/2017/01/using-immutable- > caching-to-speed-up-the-web/ > > David > > On Thu, Nov 23, 2017 at 10:07 AM, Veiko Kukk <[email protected]> wrote: > >> In addition to my previous e-mail, headers that are provided by source to >> ATS: >> >> < HTTP/1.1 200 OK >> < Content-Length: 1185954 >> < Accept-Ranges: bytes >> < Last-Modified: Mon, 02 Nov 2015 17:56:12 GMT >> < Etag: 92ef40097ba87bdf09efcf7e1cefd32a >> < X-Timestamp: 1446486971.39466 >> < Content-Type: application/octet-stream >> < Content-Disposition: attachment; >> filename="ABIYohNyPrJNjvFsAdgN5wc8D-8Yo4ZO.m4s"; >> filename*=UTF-8''ABIYohNyPrJNjvFsAdgN5wc8D-8Yo4ZO.m4s >> < Expires: Thu, 23 Nov 2017 15:27:30 GMT >> < X-Trans-Id: tx3a0af5473d5c41d38195c-005a16e30d >> < X-Openstack-Request-Id: tx3a0af5473d5c41d38195c-005a16e30d >> < Date: Thu, 23 Nov 2017 15:02:37 GMT >> < X-IPLB-Instance: 12631 >> >> I assume, Expires header is here to blame and must be overriden in ATS >> config, but how? I don't have control over source, its Openstack Swift >> object storage. >> >> Veiko >> >> >> 2017-11-23 16:35 GMT+02:00 Veiko Kukk <[email protected]>: >> >>> Hi, >>> >>> Could ATS in reverse proxy mode be configured such way that it would >>> never try to revalidate from source? It is known that in our case, object >>> never changes (and is never refetched from source) and it is desirable to >>> avoid any source validation. Validation verification adds significant >>> overhead and we need to avoid it. Response to client with TCP_REFRESH_HIT >>> would take 100-200ms instead of 0-10 in case of direct local TCP_HIT. >>> >>> I've configured following: >>> dest_domain=.*.source.tld action=ignore-no-cache >>> dest_domain=.*.source.tld revalidate=9999d >>> dest_domain=.*.source.tld ttl-in-cache=9999d >>> >>> CONFIG proxy.config.http.cache.when_to_revalidate INT 3 >>> CONFIG proxy.config.http.cache.required_headers INT 0 >>> >>> But i still get TCP_REFRESH_HIT even when 9999 days have not passed >>> (obviously). >>> >>> NB! ATS is used as internal cache and our 'client' never explicitly >>> requests revalidation. >>> >>> Thanks, >>> Veiko >>> >>> >> >
