Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX,JSON] Wydajność przesyłu danych.
Forum PHP.pl > Forum > XML, AJAX
tadeurz
Na swoich stronach często korzystam z AJAX aby wymienić fragment strony bez przeładowywania całego dokumentu.
Robię to używając jQuery w sposób przedstawiony poniżej:

  1. function GetDisc(Value){
  2. $.ajax({
  3. url: "DiscList.php",
  4. type: "POST",
  5. data: {zmienna : Value},
  6. beforeSend: function(){
  7. $("#Lista").html('<img class="Loader" src="img/loader_black.gif" alt="Animacja ładowania elementów" />');
  8. },
  9. success: function(msg) {
  10. $("#Lista").html(msg);
  11. }
  12. });
  13. }


  1. <?php
  2. $zmienna = addslashes($_POST['zmienna']);
  3.  
  4. $query -> Baza("SELECT .... ");
  5. $ile = mysql_num_rows($query);
  6. if($ile>0){
  7. for($x=0; $x < $ile ; $x++){
  8. $dane = mysql_fetch_assoc($query);
  9. echo'<li id="id_'.$dane['id'].'" >'.$dane['nr'].'.'.$dane['tytul'].'</li>';
  10. }
  11. }
  12.  
  13. ?>

I wszystko pięknie działa.Taki graf, jak jest obecnie a jak będzie po przepisaniu do JSON:
GetDisc()->plik DiscList.php: echo 'string' -> response.success: .html(string);
GetDisc()->plik DiscList.php: robi to samo tylko potem jeszcze wykonanie funkcji: json_decode($json, true) -> response.success: i tutaj musimy jeszcze przy pomocy .append(),.after(),.prepend(),.wrap() odtworzyć drzewko DOM z danych zapisanych w JSON.

Ta druga wersja naprawdę jest wydajniejsza ? Czytałem że używanie funckji odpowiedzialnych za tworzenie DOM w jQuery jest bardzo złym pomysłem.Zaoszczędzimy tylko przsyłając dane bo JSON jest mniejszym plikiem, ale cóż z tego jeżeli stracimy to tworząd DOM.Jaka jest wasza opinia na ten temat?
rocktech.pl
Witam.

Po co używać JSON`a:

1) Przenosisz logikę widoku do widoku a nie trzymasz ją w PHP
2) Łatwiej jest debugować skrypt JS
3) Łatwiej jest tworzyć skrypty JS (pracujesz na jednym pliku nie 2)

Mówisz .append(),.after(),.prepend(),.wrap() ... zainteresuj się .tmpl() ułatwi ci życie. Zobacz tego posta.
Papub
Witam,
może podepnę się pod temat. Robię tak samo jak tadeurz. Tylko nurtuje mnie pewne pytanie. Można skorzystać z tych templatow, przesłac jsonem najważniejsze dane i potem opakować je dopiero w html. Tylko jak z wydajnością tego wszystkiego? Jeżeli zrobilbym zapytanie o 300 000 rekordów z bazy danych i wstawil szablon na strone w wybrane miejsce. Nie spowoduje to jakiegoś zapełnienia pamięci podręcznej czy coś w tym stylu?
tadeurz
Mówisz: .tmpl() i kolejny plik .js do ładowania. Nie muszę mieć łatwiej, byle strona ładowała się szybciej lepiej płynniej. Wiem. że to powinienem podziękować jQ -> co właśnie robię starając się jak najwięcej pisać w JS. Dowód: Temat: JS drzewko DOM node

Papub, właśnie o to mi się rozchodzi.
Przypuszczam że jeżeli danych do przesłania jest dużo, i nie są to jakieś skomplikowane do odtworzenia drzewa DOM(lista <li></li>), to wydajniejszą metodą będzie JSON -> zaoszczędzimy na transferze serwer->przeglądarka.
Natomiast jeżeli mamy do wymienienia cały blok DIV z rozbudowanym DOM to lepiej pozostać konserwatystą.
Jednakże nie mam ogromnego doświadczenia w programowaniu jak niektórzy na tym forum, na wypowiedz których liczyłem, dlatego są to tylko moje domysły.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.