Najdziwniejsze jest to, że jeśli generuje te żądania w niewielkim odstępie czasowym to strony są wczytywane w czasie ok. 1 sek.
Opiszę to dokładniej:
Wysłanie żądanie z poziomu JS
$.ajax({ url : '{{path("ajax_pokazprawypanel_adresyip")}}', type: 'POST', dataType: 'json', data : { 'klasaadresowa' : $(this).html() }, cache : true, success : function(data) { $('.loader-kontener').hide(); $('.tresc-prawy-boks-wewnatrz .box').html(''); $('.tresc-prawy-boks-wewnatrz .box').hide(); $( "form[name='klasyadresowe']" ).hide(); var cc = 0; for (c in data["content"]) { if (cc < 64) $('.tresc-prawy-boks-wewnatrz .box1').append(data["content"][c]); else if (cc >= 64 && cc < 128) $('.tresc-prawy-boks-wewnatrz .box2').append(data["content"][c]); else if (cc >= 128 && cc < 192) $('.tresc-prawy-boks-wewnatrz .box3').append(data["content"][c]); else if (cc >= 192) $('.tresc-prawy-boks-wewnatrz .box4').append(data["content"][c]); ++cc; } $('.tresc-prawy-boks-wewnatrz .box').show(800); $('#zapisz-dns-identyfikator').show(); if (data.hasOwnProperty("feedback")) { $("#flash-messanger").removeClass(); $("#flash-messanger").addClass(data.feedback.class).html(data.feedback.message); flashMessage(); } },
Skrypt obsługujący ajax w kontrolerze, tutaj kombinowałem z cache - ale nie jestem pewien czy to dobrze robię:
public function klienciAdresyipAction() { $response = new JsonResponse(); $request = $this->container->get('request'); $klasaadresowa = $request->request->get('klasaadresowa'); $repository = $this->getDoctrine()->getRepository('MyBundleCMSBundle:Klienci'); $k = $repository->findAll(); $repository = $this->getDoctrine()->getRepository('MyBundleCMSBundle:KlasyAdresowe'); $aip = $repository->findOneByKlasa($klasaadresowa); $adresyip = $aip->getAdresyip(); $i = 0; foreach ($adresyip as $ip) { $f .= '<option value=""></option>'; foreach ($k as $klient) { if (is_object($ip->getKlienci()) && $klient->getId() == $ip->getKlienci()->getId()) $f .= '<option value="'.$klient->getId().'" selected>'.$klient->getNazwa().'</option>'; else $f .= '<option value="'.$klient->getId().'">'.$klient->getNazwa().'</option>'; } $revdns = $ip->getDns(); $arr[] = array ('<div class="wybierz-klienta-kontener"><input type="hidden" name="revdns[]" value="'.$revdns.'"><input type="hidden" name="adres[]" value="'.$ip->getAdres().'"><input type="hidden" name="klasaadresowa[]" value="'.$klasaadresowa.'"><table><tr><td><label class="adres-ip" for="select-'.$i.'">'. $ip->getAdres() .'</label></td><td><select name="wybierz-klienta[]" id="select-'.$i.'" class="wybierz-klienta">'. $f . '</select></td><td><div title="'.$revdns.'" class="revdns">'.$revdns.'</div></td></tr></table></div>' ); ++$i; ///<input name="maska[]" class="maska" type="text" size="1" value=""> } $final['content'] = $arr; } else { $f .= '<option value=""></option>'; foreach ($k as $klient) { if ($klient->getNazwa() == 'Iwacom') $f .= '<option value="'.$klient->getId().'" selected>'.$klient->getNazwa().'</option>'; else $f .= '<option value="'.$klient->getId().'">'.$klient->getNazwa().'</option>'; } for ($i = 0; $i < 256; $i++) { $revdns = gethostbyaddr($klasaadresowa.'.'.$i); $arr[] = array ('<div class="wybierz-klienta-kontener"><input type="hidden" name="revdns[]" value="'.$revdns.'"><input type="hidden" name="adres[]" value="'.$klasaadresowa.'.'.$i.'"><input type="hidden" name="klasaadresowa[]" value="'.$klasaadresowa.'"><table><tr><td><label class="adres-ip" for="select-'.$i.'">'. $klasaadresowa.'.'.$i .'</label></td><td><select name="wybierz-klienta[]" id="select-'.$i.'" class="wybierz-klienta">'. $f . '</select></td><td><div title="'.$revdns.'" class="revdns">'.$revdns.'</div></td></tr></table></div>' ); } $final['content'] = $arr; } $response->setData($final); $response->setPublic(); $response->setMaxAge(24*60*3600); //1 day $response->setClientTtl(24*60*3600); //1 day $response->headers->addCacheControlDirective('must-revalidate', true); return $response; }