Hi All

This is what I had to do for successfully caching youtube video. I tested with 
this URL http://www.youtube.com/watch?v=7M-jsjLB20Y 

Please follow the instruction given on 
http://wiki.squid-cache.org/ConfigExamples/DynamicContent/YouTube . Then I had 
these following lines in squid.conf. Also pasting below my storeurl.pl

###Following refresh pattern and store url rewrite config was used

acl store_rewrite_list1 dstdomain .youtube.com .video.google.com
acl store_rewrite_list urlpath_regex  
\/(get_video\?|videodownload\?|videoplayback\?|watch\?)
#acl store_rewrite_list urlpath_regex  
\/(get_video\?|videodownload\?|videoplayback\?|watch\?|generate_204\?|docid=)
storeurl_access allow store_rewrite_list store_rewrite_list1
storeurl_access allow all
cache allow all
storeurl_rewrite_program /tmp/squid/storeurl.pl
storeurl_rewrite_children 1
storeurl_rewrite_concurrency 10

#youtube's videos
#refresh_pattern -i 
(get_video\?|videoplayback\?|videodownload\?|watch\?|generate_204\?|docid=)$ 
5259487 99999999% 5259487 ignore-no-cache override-lastmod override-expire 
ignore-reload negative-ttl=0
refresh_pattern -i (get_video\?|videoplayback\?|videodownload\?|watch\?) 
5259487 99999999% 5259487 ignore-private ignore-no-cache override-expire 
ignore-reload negative-ttl=0

##squid.conf portion ends

##contents of storeurl.pl
#!/usr/bin/perl
$|=1;
while (<>) {
    chomp;

    @X = split;
    $x = $X[0];
    $_ = $X[1];
    if (m/^http:(.*)\.youtube\.com\/videoplayback\?(.*)id=(.*?)&/) {
                print 
$x."http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id="; . $3 . "\n";
    }elsif (m/^http:(.*)\.youtube\.com\/generate_204\?(.*)id=(.*)/) {
                print 
$x."http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id="; . $3 . "\n";
    }elsif (m/^http:(.*)\.video\.google\.com\/(.*)docid=(.*?)&/) {
                print 
$x."http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id="; . $3 . "\n";
    } elsif (m/^http:\/\/(.*)\.youtube\.com\/get_video\?video_id=(.*)/) {
                print 
$x."http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id="; . $2 . "\n";
    } elsif (m/^http:(.*)\.youtube\.com\/watch.*v=(.*)&/) {
                print 
$x."http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id="; . $2 . "\n";
    } elsif (m/^http:(.*)\.youtube\.com\/watch.*v=(.*)$/) {
                print 
$x."http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id="; . $2 . "\n";
    } elsif (m/^http:(.*)\.youtube\.com\/get_video\?(.*)video_id=(.*?)&/) {
                print 
$x."http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id="; . $3 . "\n";
    } elsif 
(m/^http:\/\/74\.125(.*?)\/get_video\?video_id=(.*?)&origin=(.*?)\.youtube\.com 
/) {
                print 
$x."http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id="; . $2 . "\n";
    } else {
        print $x.$_ . "\n";
    }
##storeurl.pl ends

Thank You.

Regards,
Saurabh

-----Original Message-----
From: Saurabh Agarwal [mailto:[email protected]] 
Sent: Friday, November 26, 2010 3:10 PM
To: Amos Jeffries
Cc: [email protected]
Subject: RE: [squid-users] Caching youtube videos problem/ always getting 
TCP_MISS

Hi Amos 

It works fine now. Youtube videos are being cached. There was a mistake in 
refresh_pattern.

Regards,
Saurabh

-----Original Message-----
From: Amos Jeffries [mailto:[email protected]] 
Sent: Tuesday, November 23, 2010 4:47 PM
To: [email protected]
Subject: Re: [squid-users] Caching youtube videos problem/ always getting 
TCP_MISS

On 23/11/10 23:50, Saurabh Agarwal wrote:
> Thanks Amos.
>
> I fixed the channel id problem by fixing storeurl rewriter perl script but 
> still the video/x-flv response is getting RELEASED in store.log instead of 
> SWAPOUT. Can you please read below cache.log and suggest what is still going 
> wrong? Now "Rewrote to" message prints the right transformed URL. After this 
> store tries to look up for the "6B2E83D66FC215C27ECFBA432AB7B5F6" key which 
> returns a TCP MISS for the same key lookup for 2nd and third tries as well. 
> Then one hash entry gets inserted with another key for the same big URL with 
> different hash key for 2nd and 3rd time as well. This new key is 
> "04BE27CFF614A3315F5CEB008464C453". I have also pasted HTTP response header 
> for video/x-flv content from cache.log. After this I see "Deferring starting 
> swapping out" message in cache.log. Can you please suggest why it is not 
> swapping out?
>
> I am pasting below a section of squid.conf file as well. After this is the 
> cache.log output.
>

I'm thinking you don't want to ignore the last-modified header. It seems 
to be usefully far in the past to cause caching for some period. 
Ignoring it may cause the refresh_pattern to fail in extending the 
storage time (99999999% of last-modified age).

Other than that I don't really know. I have not spent time working out 
how to port storeurl* feature yet so don't know its internals well.

Amos
-- 
Please be using
   Current Stable Squid 2.7.STABLE9 or 3.1.9
   Beta testers wanted for 3.2.0.3

Reply via email to