On 15/10/2013 2:24 p.m., Eliezer Croitoru wrote:
Couple notes in between the lines.

On 10/15/2013 04:06 AM, Alex Rousskov wrote:

>I have been considering way to make the "cache" directive the top level >of a set of the caching configuration. Similar to how auth_param is the
>tope level of most auth scheme options.
>
>Would you be able to make "cache" directive accept two alternative
>parameter alongside allow/deny as the first field and then process the
>rest of the line according to that field?
>I would suggest "store-miss" and "send-hit" for those parameters.

We could do that, but I doubt that the advantages of that approach
outweigh its drawbacks:

Since each option is applied independently from others, it may only
confuse folks that are used to our usual "first matching ACL rule wins"
approach:

   cache store-miss allow foo
   cache send-hit allow foo
   cache early deny foo

I assume by "early" you mean a backwards compatible "cache deny foo" lines?

What I was thinking for these was the above config is parsed into the two sequences:

 cache store-miss allow foo
 cache store-miss deny foo # converted from "cache early deny foo"

 cache send-hit allow foo
 cache send-hit deny foo # converted from "cache early deny foo"


We only have two lookup points: pre-cache and post-reply. This is no more or less confusing than when any other independent access control is interleaved - say your reply_from_cache / reply_to_cache list in that same above order. It comes down to clear documentation and clear backward compatibility support. Which we can easily do for this one.

The "no_cache" directive changed its semantics slighty when becomming "cache" - used to mean imply the Cache-Control:no-cache directive received from client. If it had that original meaning still it would today have quite different behaviour than what it does now - invalidating content would not happen for a start.


Another idea is whether to add a name= parameter to the cache_dir and have "cache X allow/deny ..." rules per storage area. To go a little further than min/max object sizes.


If I do not know squid it looks a bit bettr that ^^ way.
But since I know squid.. the next paragraph describe a bit what I think:

The last rule actually wins here, but the above configuration seems to
imply the opposite to folks used to looking at Squid ACLs. I know we
cannot use the "first matching rule wins" approach for some existing
directives, but are you sure this approach works better for the two new
directives we are discussing here?

Also, the "scope" keywords (store-miss and send-hit) do not blend well
with "cache" IMHO because of the overlap between "store" and "cache" as
well as between "hit" and "cache".

The advantage of your proposal is that it groups all directives under a
common "cache" prefix, but it feels like that is not enough to justify
this complexity and the "cache" prefix itself is already used in
squid.conf for other things anyway (the "cache" term is too overloaded
in Squid context).


I am happy to rename

* "reply_to_cache" to ("store_miss" or "cache_miss") or "miss_caching"
   * "reply_from_cache" to ("send_hit") or "hit_sending"

A small question about the "send_hit" is it means like "send to client a HIT" ??

That is the intention. Send client *if* it is a HIT. Thus only relevant on HIT responses.


I think store_miss and send_hit are the best out of those above.

The naming of HIT directive is a bit tricky, but the above is no more or less ambiguous than reply_from_cache. Perhapse "lookup" or "find", "seek" , "search" somethign along those lines? instead of send-hit or reply_from.

   cache_lookup allow/deny has a nice clear semantic to it.

   cache_store_miss

Even cache_write / cache_read are somewhat close to the intended behaviour.



if you think any of those name pairs are better.

FWIW, the primary reason I used "cache" was to show similarity or
connection with the existing "cache" option. The primary reason I used
"reply" is to stress that these new directive can work with responses,
unlike the old "cache". Reply_from_cache works pretty good IMO, but I
certainly do_not_  consider "reply_to_cache" a good name on its own!

Sure and I agree it needs to be in there with the current style of things. It just needs to be at the front of the directive name as part of that per-component style to keep it inline with the others.

+1 ^^



BTW, I foresee us eventually supporting a new "force" action with these
new options that will force Squid to cache something or serve a hit
despite HTTP rules saying otherwise, but that is way outside this
project scope.

Hmm, yes. We are probably better reserving the "hit" part of the naming for that type of thing. eg "cache_force_hit" to pretend the client sent "Cache-Control:only-if-cached" directive. But beyond avoiding the word for now thats out of scope here.

Amos

Reply via email to