n° 219
Novembre 2017
Dicembre 14, 2017, 12:50:36 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Django & Ajax  (Letto 846 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
gmss
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 45


Mostra profilo
« inserita:: Luglio 13, 2017, 10:18:44 »

Ciao a tutti.

Volevo imparare qualcosa di nuovo, così, dopo un po' di ricerca, ho deciso d'utilizzando il framework "Django v.1.11.2" (Python v.3.6.1).

Il mio problema è la velocità con cui Django manda la risposta al client. Vorrei poter velocizzare la risposta.

Ho provato a fare la stessa cosa usando php, servlet/jsp e la risposta è molto più veloce, circa 0.3ms - 0.5 ms

La versione (django) 1 impiega circa 1,2 secondi
La versione (django) 2 impiega circa 2,2 - 2.4 secondi
La versione (django) 3 impiega circa 2,2 - 2.4 secondi

app.html
Codice:
<html>
 ...
carico css, jquery ed il mio javascript file
 ...
<body>
<input type='button' value='Carica' onclick='caricaDati();' />
<br />
<div id='dati'></div>
</body>
</html>

jsFile.js
Codice:
function caricaDati(){
    $.ajax({
            type: 'GET',
            url: "myData",
            cache: false,           
            success: function (data) {
                document.getElementById("dati").innerHTML = data;
            },
            error: function (xhr) {
                console.error("Errore: " + xhr);
            }
    });
}

urls.py
Codice:
....
url(r'^myData', views.get_data, name='myData')
...

view.py

Versione 1
Codice:
def get_data(request):
    cursor = connection.cursor()
    sql = "select, id, dataeora, descrizione, valore from testdb order by dataeora desc limit 30"
    cursor.execute(sql)
    dati = cursor.fetchall()
    resp = "<table>"
    for d in dati:
       resp += """<tr>
          <td>"""+d[0]+"""</td>
          <td>"""+d[1]+"""</td>
          <td>"""+d[2]+"""</td>
          <td>"""+d[3]+"""</td>
          </tr>
   
     resp += "</table>
     return HttpResponse(resp ) 
           

Versione 2
Codice:
def get_data(request):
    dati = myModel.objects.all().order_by('-dataeora')[:30]
    resp = "<table>"
    for d in dati:
       resp += """<tr>
          <td>"""+d.id+"""</td>
          <td>"""+d.dataeora+"""</td>
          <td>"""+d.descrizione+"""</td>
          <td>"""+d.valore+"""</td>
          </tr>
   
     resp += "</table>
     return HttpResponse(resp)

Versione 3:
Codice:
def get_data(request):
   dati = myModel.objects.all().order_by('-dataeora')[:30]
   context = {"dati" : dati,}
   return render(request, 'myapp/app1.html', context)

app1.html
Codice:
{% if dati %}
   <table>
        {% for d in dati %}
            <tr>
              <td>{{d.id}}</td>
              <td>{{d.dataeora}}</td>
              <td>{{d.descrizione}}</td>
              <td>{{d.valore}}</td>
            </tr>
          {% endfor %}
   </table>
{% endif %}


Se qualcuno potesse dirmi se e come potrei migliorare in modo che la riposta dal server sia più veloce.

Grazie !!!
Registrato
gmss
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 45


Mostra profilo
« Risposta #1 inserita:: Luglio 19, 2017, 09:16:42 »

Sono riuscito a trovare dove sta l'errore.

Il problema non è nel codice, ma nella configurazione  database.

cambiare da 
Codice:
'HOST': 'localhost',
a
Codice:
'HOST': '127.0.0.1',

Eventualmente, cambiare anche nel file host:
  • #127.0.0.1       localhost
  • #::1             localhost

Questa piccola modifica fa in modo che la risposta dal server diveti molto più veloce.
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines