2011-03-21 13 views
8

Tek bir ESI ile Varnish yoluyla yüklenmekte olan temel bir PHP sayfam var, bunlar arasında bir çerez ayarlamak için sunucuya geri arama var. Çerez, alan adı erişimi ve benzeriyle ayarlanır, ancak ESI aracılığıyla çağrıldığında çerez hiçbir zaman ayarlanmaz. ESI'ye doğrudan erişim yolu eklerseniz, çerez hiçbir sorun olmadan ayarlanır. Varnish konfigürasyonumu, VCL'nin kurabiyeyi öldürdüğünü düşünerek hiçbir şeyi önbelleğe almamam için ayarladım.Bir ESI içinden nasıl bir tanımlama bilgisi belirlersiniz: komut dosyası içerir?

<esi:include src="/init.php?<?=http_build_query($_GET); ?>"></esi:include> 

... Bu içermektedir

Bu ... ...

<?php 
header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 

setcookie('superman', 'clark kent', 0, '/', '.whatever.com'); 

?> 

Ben Vernik ve ESI ile yeniyim, bu yüzden bu bir olup olmadığını merak etmeye başlıyorum Bilinen sınırlama (ESI ile veya Varnish'in ESI uygulamasıyla), ancak benim sorunum hakkında herhangi bir tartışmayı çevrimiçi ortamda bulamıyorum.

cevap

13

Daha önce sorulmamış olan ilginç bir soru - daha önce yanıtlanmamıştır (Setting Cookies via ESI:include, how?). Bunu böyle yapabileceğini sanmıyorum. ESI-içerir, ESI işlemci ayrı bir istek yapar ve başlık değil, vücudun bir parçası değiştirir. Tercih ettiğiniz set-cookie davranışını doğru bir şekilde yapmak için ESI spesifikasyonu tüm set-cookie başlıklarının nasıl birleştirileceğini belirtmelidir. ESI spec

bakınız bölüm altı: ESI şablonu işlendiğinde http://www.w3.org/TR/esi-lang

bir ayrı talep gerekir her karşılaşılan içerir için yapılacaktır. Uygulamalar, bunu yaparken orijinal istek başlıklarını kullanabilir (ör. Cookie, Kullanıcı Aracı, vb.). Ayrıca, parçalarından (örneğin, Set-Cookie, Sunucu, Önbellek Denetimi, Son Değiştirilen) yanıt başlıkları göz ardı edilebilir olabilir ve birleştirilmiş sayfayı etkilememelidir.

Set-cookie başlığınızı javascript set-cookie komut dosyasına dönüştürmeyi deneyebilir misiniz? Bu vücutta bulunabilir ...

+0

Suck. Evet, kurabayı ayarlamak için javascript rotasına gidebilirdim, ancak çeşitli nedenlerden dolayı bunu yapmak zorunda kalmayı umuyordum. Bunu kesmek için olası bir yol bulmaya çalışacağım sanırım, ama şimdi mümkün olandan emin değilim, özellikle Vernik'teki hafif ESI uygulamasıyla. –

İlgili konular