Mam taki problem, że wysyłam żądania poprzez ajax a czas odpowiedzi 20 - 50 sek. co raczej nie jest normalne. Właściwie to chodzi mi o namierzenie przyczyny tego stanu rzeczy.
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();
if (count($adresyip) > 0
) { $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;
}