LoyC Posted February 6, 2013 Report Share Posted February 6, 2013 (edited) Vajadzīga neliela palīdzība ar varnish konfigurāciju. Problēma tāda, ka ieejot pirmo reizi lapā varnish uztaisa miss, kas ir logiski. Refresh un ir hit. Paņemot citu browseri, atverot to pašu lapu atkal pirmais ir miss un pēc tam hit. Sanāk, ka katram lietotajam ir savs keš, bet itkā konfigurācijā nekas tāds nav minēts. Ko varētu pamainīt, lai piespiestu varnish visiem anonīmajiem lietotājiem ņemt no viena keša nevis katram sava? Tā pati problēma ir arī ar vienkāršu sub vcl_recv { unset req.http.Cookie; return (lookup); } default.vcl https://gist.github.com/nigareps/b9348e7ec26a6fb5e1d6 Edited February 6, 2013 by LoyC Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted February 6, 2013 Report Share Posted February 6, 2013 Ieksh vcl_hash neko nedari? Request's ir taads pats? Kukiji naak liidzi vai nee? Saliidzini paarluuku suutiitos header'us (vai iekopee te). Quote Link to comment Share on other sites More sharing options...
LoyC Posted February 6, 2013 Author Report Share Posted February 6, 2013 Mēģināju kaut kādus variantus iekš vcl_hash, bet arī bez panākumiem, tagad stāv default. Requests tāds pats. Kukiji nāk līdzi, bet ar tiem es veiksmīgi tieku galā. https://gist.github.com/nigareps/99de9d092ab0e0a29902 Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted February 6, 2013 Report Share Posted February 6, 2013 Kas notiek ja .vcl failā ieliec tikai šo rutīnu (un protams definē noklusēto backend'u)? sub vcl_recv { unset req.http.Cookie; return (lookup); } Joprojām nav viens cache? P.S. Varnish 2.x vai 3.x? Quote Link to comment Share on other sites More sharing options...
LoyC Posted February 6, 2013 Author Report Share Posted February 6, 2013 Varnish 3. Pamēģināju uz plika php faila echo rand(), uz tāda darbojās kā vajag. Varnish paredzēts drupalam. Varbūt esmu aizmirsis kādu headeri? Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted February 6, 2013 Report Share Posted February 6, 2013 Nezinu neko par drupal. Iespējams drupal sūta Cache-Control headeri lai ne-cache'o? Iekš vcl_fetch ieliec unset beresp.http.Cache-Control un paskaties kas notiek. Quote Link to comment Share on other sites More sharing options...
LoyC Posted February 7, 2013 Author Report Share Posted February 7, 2013 Tas pats. Varbūt ir iespējams varnish pateikt, lai ignorē pilnīgi visu informāciju, ko sūta gan drupal gan browseris? Un vēl jautājums, nekur nevaru atrast, kā apskatīties iekešoto url un hash sarakstu? Varētu salīdzināt vai hashi vienādiem url ir vienādi. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted February 7, 2013 Report Share Posted February 7, 2013 Pilnīgi visu ignorēt nevar, bet vari pārrakstīt subrutīnas beigās veinmēr return'ojot kaut ko. vcl_recv { unset req.http.Cookie; return (lookup); } vcl_hash { hash_data(req.http.Host); hash_data(req.url); } vcl_fetch { unset beresp.http.Cache-Control; unset beresp.http.Set-Cookie; beresp.ttl = 1h; return (deliver); } Pamēgini tik šo iekš vcl un skaties kas noteikt. Šim vajadzētu cache'ot visu... Quote Link to comment Share on other sites More sharing options...
LoyC Posted February 7, 2013 Author Report Share Posted February 7, 2013 (edited) Jap šis darbojās. Mēģināšu likt pa vienam settingam klāt un meklēt problēmu. Paldies, tagad vismaz pilnībā bezcerīgi viss neizskatās. Edited February 7, 2013 by LoyC Quote Link to comment Share on other sites More sharing options...
LoyC Posted February 7, 2013 Author Report Share Posted February 7, 2013 Vēl viena jocīga problēma. Pēc ielogošanās iesetojās kukijs AUTH un notiek redirekts uz iekešotu lapu. Bet nezināmu iemeslu dēļ iekešotās lapas tiek padodas izlaižot vcl_recv un es nevaru pārbaudīt kūkiju un uztaisīt return pass; Cik sapratu tad pilnīgi visi requesti iet cauri vcl_recv, bet laikam tomēr nē. Kur tad man vajadzētu pārbaudīt kukiju un taisīt pass? Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted February 7, 2013 Report Share Posted February 7, 2013 Visi pieprasiijumi iet caur vcl_recv. Ja ieksh vcl_recv tu dari return(pass) un iesh vcl_fetch tu dari return(deliver) tad tev vajag speciaali handle'ot return(pass) no vcl_recv. Aptuveni taa: vcl_recv { if(req.http.Cookie ~ "AUTH") { set req.http.X-Hit-For-Pass = "true"; return (pass); } } vcl_fetch { if(req.http.X-Hit-For-Pass == "true") { unset req.http.X-Hit-For-Pass; return (hit_for_pass); } return (deliver); } Quote Link to comment Share on other sites More sharing options...
LoyC Posted February 7, 2013 Author Report Share Posted February 7, 2013 Ieeju lapā, ierakstu configā iekš vcl_recv kā pirmo rindu panic(""); salgabāju un restart varnish un man tik un tā to lapu padod no keša. Ieejot citā lapā, kura nav nokešota ir errors. Pēc tāda testa taču sanāk, ka vcl_recv nenostrādā vispār. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted February 7, 2013 Report Share Posted February 7, 2013 Nezinu kas tev tur notiek. vcl_recv vienmeer tiek izsaukts - pat ja lapa ir cache'aa. Pats tikko pameegjinaaju un pat ja lapa ir cache'aa tad panic tiek izsaukts. Varbuut tev paarluuks ir nokeshojis to lapu? Ja jau tu restartee Varnish, tad cache pazuud shaa vai taa. P.S. restarteet Varnish'u nav vajadziibas ja gribi nomainiit .vcl. Ieej varnishadm un izmanto vcl.load un vcl.use Quote Link to comment Share on other sites More sharing options...
LoyC Posted February 7, 2013 Author Report Share Posted February 7, 2013 (edited) deeem, tiešām browserī bija iekešots. Nezināju, ka browseris var iekešot visu lapu un pat pieprasījumu uz serveri nesūtīt. Edited February 7, 2013 by LoyC Quote Link to comment Share on other sites More sharing options...
daGrevis Posted February 7, 2013 Report Share Posted February 7, 2013 Broversa kešs ir maita. Man arī ir bijušas visādas problēmas... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.