2016-04-09 26 views
0

Belirli bir web sitesindeki Video On-Demand ürününü önbelleğe almak istiyorum. Video için sayfayı açtığınızda, ilk önce oynatıcıyı yükler ve oynat'ı tıkladığınızda, farklı bit hızları için chunklists (medya çalma listeleri) bağlantılarını içeren çalma listesi dosyasını yükler, bu chunklistler video dosyalarına (medya segmentleri) bağlantılar içerir.Caching Video On-Demand

Sadece bir örnek: Ben asla bu dosyaların herhangi bir HIT için master playlist - media playlist - media segments

- her zaman MISS. Cache-Control: no-cache başlık alanı olduğundan, reply_header_access Cache-Control deny all ve reply_header_replace Cache-Control max-age=3600'u denedim, ancak bu yardımcı olmuyor. Sonra istek başlığında çerez bununla bir ilgisi olabileceğini düşündük - ama hayır: How does Squid deal with Cookies?

Ben şarkı listesinin Content-Length alan 201 ila 205 arasında değişir fark etmiş - belki onunla ilgili bir şey var mı? Ancak içerideki içerik her zaman hemen hemen aynıdır - boyutu değiştirebilecek tek şey, içte (chunklist_w[random-number]_b800000.m3u8) rastgele bir sayıya sahip chunklists bağlantılarının olduğu, rastgele bir sayının uzunluğunun genellikle 9 veya 10 olmasıdır. basamak. Neden oynatma listesi dosyasını önbellekten sunmak istiyorum, böylece tarayıcı her zaman aynı URL için istekte bulunacak ve bu URL önbelleğe alınacak ve böylece URL'leri yeniden yazmaya gerek kalmayacaktır.

Teorik olarak, çalma listesi dosyası, kökenden (proxy'ye ilk istek) ve daha sonra her zaman kalamar önbelleğinin yanı sıra yığın listelerden ve medya dosyalarından yalnızca bir kez istenmelidir, çünkü URL'ler aynı kalmaya devam eder. .

Kalamar neden bu içeriği önbellekten sunmuyor? (Öte yandan, "statik" içeriği [görüntüler, js, css] önbelleğinden kullanılır)


Güncelleme # 1: Ben de bile 20 MB maximum_object_size 4'ten MB genişleterek çalıştık tüm dosyalar 2 MB civarında olsa da. Hala hiçbirşey.


Ek bilgi:

kalamar:

rastgele sayı = 1887187059 (10 rakam)

ayrıntılı Üstbilgi:

GET [omitted] HTTP/1.1 
Host: [omitted] 
Proxy-Connection: keep-alive 
X-Requested-With: ShockwaveFlash/21.0.0.197 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 
Accept: */* 
Referer: [omitted] 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-GB,en;q=0.8,en-US;q=0.6,sl;q=0.4 
Cookie: PHPSESSID=jfg6j07l9i6bep37jsacig84e1; nocache=0 

yanıt Üstbilgi:

HTTP/1.1 200 OK 
Accept-Ranges: bytes 
Server: WowzaStreamingEngine/4.3.0 
Cache-Control: max-age=86400 
Date: Sat, 09 Apr 2016 14:45:53 GMT 
Content-Type: application/vnd.apple.mpegurl 
Content-Length: 205 
X-Cache: MISS from squid3 
X-Cache-Lookup: MISS from squid3:3128 
Via: 1.1 squid3 (squid/3.3.8) 
Connection: keep-alive 
Squid olmadan

:

rastgele sayı = 204.546.888 (9 basamak)

ayrıntılı Üstbilgi:

GET [omitted] HTTP/1.1 
Host: [omitted] 
Connection: keep-alive 
X-Requested-With: ShockwaveFlash/21.0.0.197 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 
Accept: */* 
Referer: [omitted] 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-GB,en;q=0.8,en-US;q=0.6,sl;q=0.4 
Cookie: PHPSESSID=jfg6j07l9i6bep37jsacig84e1; nocache=0 

yanıt Üstbilgi: İçerik önbellek yapılan

HTTP/1.1 200 OK 
Accept-Ranges: bytes 
Server: WowzaStreamingEngine/4.3.0 
Cache-Control: no-cache 
Date: Sat, 09 Apr 2016 14:59:56 GMT 
Content-Type: application/vnd.apple.mpegurl 
Content-Length: 203 

cevap

0

satır :

Geçerlilik, Last-Modified ve Cache-Control:
refresh_pattern \.(ts|m3u8)$ 120 50% 180 override-expire override-lastmod ignore-no-cache 

Bu hat uzatma .ts ile dosyaları veya .m3u8 3 saate kadar taze düşünülmelidir ve üç HTTP başlık alanlarını geçersiz gerektiğini önbellek yöneticisi söyler no-cache

refresh_pattern hakkında daha fazla bilgi için, Squid Documentation'u kontrol edin. Bu içeriği daha önce önbelleğe değildi Neden

seçenekleri override-expire, override-lastmod, ignore-no-cache hiç önemli değil önbelleğe alma meselesi zamanında çünkü kayıp olduğunu - biz kullanıcıya içerik sunmak için istediğinizde fark eder.