Search squid archive

Re: Question about ICAP.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/07/2012 3:57 p.m., Eliezer Croitoru wrote:
i already asked before once.
i want to prioritize ICAP services by specific order like : basicfiltering depth filtering

so i use: adaptation_service_chain ??
as far i understand it will make the checks by order.
and what if one of the ICAP services has deny acl for the url?
let say

#request: http://www.google.com/
acl google dstdomain .google.com
adaptation_service_chain urlFilter logger1 logger2
urlFilter allow all
logger1 deny google
logger1 allow all
logger2 allow all

?

[my knowledge of this part is weak, so YMMV]
As I understand it the service chain is just the default ordering. Any services which cannot service the particular details will be omitted from the service chain actually used.



another question is:
ICAP respmod_precache from squid has i have seen will send the request url. and i'm not sure (i dont remember ICAP rfc) if the RESPMOD suppose to send the request url as part of the protocol. can i send in the RESPMOD the request url and by that change the url that the content will be stored at?

I don't believe so. The RESPMOD is pre-cache, but to Squid that only means the cache location has been determined, opened and awaiting data. These services are modifying what will fill into that. You need a REQMOD service to modify any request details. Squid REQMOD is carefully been made pre-cache as well so that the caching properties can be modified.

But you don't need store_url to de-duplicate when ICAP can replace the whole video with a redirect to the previously stored videos URL.


in the Encapsulated header i am getting the request and the response.
in a REQMOD i am responding with:
Encapsulated: req-hdr=0, null-body="some_byte_number"
maybe i can response to a RESPMOD with header like:
Encapsulated: req-hdr=0, res-hdr=583, res-body=850


To modify the response sometimes the request details are required. That does not mean you can modify the request details. At that stage they are read-only.

and to change the request header.. then on squid the cached url will be the one from the ICAP server response and then there is no longer need for "store_url_rewrite" at all because ICAP can replace url_rewrite and store_url_rewrite..

If you want to look into updating ICAP to pass back an altered key for Squid we can look into that as a store_url replacment. Store URL de-duplication was an experimental feature which never really stabilized properly for the YT use-case it was supposed to handle (that nasty redirect patch and the recent multi-encoding issues).

There are other possibilities as well, Digest: and alternative-URI Link: location features of HTTP need better support in Squid and could be used to replace store_url features.

Digest: with a cache indexed on object digest hashes allows client some control over when de-duplication is performed. By requesting a hash match when URL MISSes (or not).

The Link: support would be particularly useful in replacing store_url. It allows responses to register multiple duplicating sets of URL. With one reply Squid could index the alternatives and HIT on multiple other URLs in future requests. This one would be controllable with RESPMOD, Link being a response header.


Thanks,
Eliezer

this is a basic ICAP RESPMOD session sample to work with..:
RESPMOD icap://127.0.0.1:1344/respmod ICAP/1.0
Host: 127.0.0.1:1344
Date: Sat, 07 Jul 2012 03:42:40 GMT
Encapsulated: req-hdr=0, res-hdr=583, res-body=850
Preview: 0
Allow: 204

GET http://www.google.com/ HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: PREF=ID=3f1a1925884751e3:U=726510ee09cc5141:FF=0:LD=en:TM=1317970640:LM=1339099594:GM=1:S=VsYoiMXWKW5OPJaK; NID=60=hSChbnc5ZvZSldPGywiQG9OkjCYFC9NNLXWHWg84bCsDeD1g7mvD3uN0nObnb17DnuWLeAi5nsmgHvqlbSvV_9qJuHUqbT0j9q1ydyCodwqCvxLrF-yd69ZzBHf5xxZyPyBn_0KkOxbbYH2YAGyJuEU; OGPERM=W6%3D0.0.4.60

HTTP/1.1 302 Moved Temporarily
Location: http://www.google.co.il/
Cache-Control: private
<snip>
0

ICAP/1.0 200 OK
ISTag: "GreasySpoon-1.0.8-01"
Host: 127.0.0.1:1344
Encapsulated: res-hdr=0, res-body=295
Connection: close

HTTP/1.1 302 Moved Temporarily
Location: http://www.google.co.il/
Cache-Control: no-cache, no-store, must-revalidate

Strange modification.

no-store overrides no-cache and must-revalidate, both of which only operate on stored content sometime in the future. It is useless waste of bytes placing all three in one cache-control header.

Squid being a shared proxy "private" and "no-store" are handled the same. So all this does is prevent the browser caching the 304 on the users machine.


Amos


[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux