<div dir="ltr">Amos,<div><br></div><div>Thank you very much for you reply,</div><div><br></div><div>But I would just like to confirm this,</div><div><br></div><div>I thought ETAG is something which we can verify like,</div><div><br></div><div>- when the server is sending response it sends ETAG.</div><div>- squid then decides to cache it with ETAG</div><div>- now if somebody tries to fetch the same URL given they are on same squid network, squid will send previously saved copy of the ETag along with the request in a "If-None-Match" field.</div><div>- On this subsequent request, the server may now compare the client's ETag with the ETag for the current version of the resource. If the ETag values match, meaning that the resource has not changed, then the server may send back a very short response with a HTTP 304 Not Modified status. The 304 status tells the client that its cached version is still good and that it should use that.</div><div><br></div><div>Now comparing this to our GitHub example.</div><div>- when we request <a href="https://codeload.github.com/hardikdangar/test/zip/master">https://codeload.github.com/hardikdangar/test/zip/master</a> it has </div><div> ETag: "9ea9838812d6f7bc53763eb1577da04e2fa473d5"</div><div>- even if you request it after a day ETAG remains the same as long as repository is not changed.</div><div>- So when i request that file again squid would not send request with ETAG to server ?</div><div><br></div><div>( just to clarify, github does not change ETAG unless you change files in repo). My concern is if ETAG is not changed then we want to use the cache but if its change then we want to download copy of new version.</div><div><br></div><div>now based on your answer you have said it will not request the file again until min time defined in referesh_pattern. what if i set the request min time to be like 1 minute in referesh_pattern ? will it cause squid to check ETAG with server and it will serve cached file as ETAG is not changed. or will it just drop the cached file after a minute and download new file ?</div><div><br></div><div>Sorry for all of my noob questions but i am just trying to understand squid and its options. it's really fascinating software and really appreciate your answers here.</div><div><br></div><div>Thank you very much.</div><div>Have a good day.</div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 16, 2016 at 12:39 PM, Hardik Dangar <span dir="ltr"><<a href="mailto:hardikdangar+squid@gmail.com" target="_blank">hardikdangar+squid@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><i>Amos,</i></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)">Thanks for the reply but it seems i am not able to tell you what i want to do. i don't want to cache repo files. i want to cache .zip files only. <span style="font-family:arial,sans-serif">i don't want .git file to cache but only .zip files which are fetch from <a href="http://github.com" target="_blank">github.com</a>,</span></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)">Also you have said things about commits but i am talking about zip file which is given by github via download button or composer fetches those files via command line directly. as soon as someone commits zip file's ETag is changed when you fetch it.</pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)">So there is no way to achieve this ? Do you think there is a way to achieve this ?</pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><br></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote"><i>Consider: how does Squid know the ETag has changed on the server?</i><i>
</i><i>What you know about things happening in RL is not what Squid knows.</i><i>
</i><i>I fact how do *you* know someone else did not commit a change during<br></i><i>that ~1 second it takes to look at the page and click the download button?<br></i><i> Simply, you don't, and cannot until the new object has been fetched.</i><i>
</i><i>Likewise, Squid cannot know if the object is the same until it has<br></i><i>fetched a MISS from the server. Except that Squid does not look at the<br></i><i>previous page content, so it cannot even 'see' if there is a commit<br></i><i>listed there that might be different since whenever it got the previous<br></i><i>object.</i><i>
</i><i>There is no Cache-Control or Expires header indicating a specific<br></i><i>storage timeout or revalidation procedure. So refresh_pattern defaults<br></i><i>will be used. These responses will be cached for the refresh_pattern<br></i><i>'Min' duration (900 minutes) before being considered for revalidated.</i><i>
</i><i>NP 1: Synthesizing Last-Modified from the Date header is only just being<br></i><i>fixed in Squid the past few weeks, and some parts of it still to be<br></i><i>committed. So I would not expect that response to be revalidated, just<br></i><i>re-fetched fully in older Squid.</i><i>
</i><i>NP 2: The Vary header indicates that every person logged in gets a<br></i><i>differently cached response based on how their credentials are hashed on<br></i><i>each request (in Authorization tokens). So caching these objects will<br></i><i>not help much with many developers involved. It will be of most help for<br></i><i>the anonymous visitors where username is always a generic NIL value.</i><i>
</i><i>HTH<br></i><i>Amos</i></blockquote></pre></div></div>
</blockquote></div><br></div>