Βελτίωση ταχύτητας στο φόρτωμα της σελίδας

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Βελτίωση ταχύτητας στο φόρτωμα της σελίδας

Δημοσίευση από philos » 27 Δεκ 2013 22:06

Χρησιμοποιώ μια μέθοδο του last.fm API για να τραβήξω αποτελέσματα ως *xml, τα οποία διαχειρίζομαι με PHP. Ο κώδικάς μου είναι ο παρακάτω. Τραβάω το τελευταίο τραγούδι που άκουσε ο χρήστης και ΑΝ παίζει εκείνη την ώρα, τότε το εμφανίζω.
Το θέμα είναι ότι αν μια σελίδα έχει να κάνει πάνω από 1 request (πχ 2-3), δημιουργείται μια αισθητή καθυστέρηση στο φόρτωμά της. :(

Κώδικας: Επιλογή όλων

    if ($lastfmusername != '')
    {                    
        $scrobbler_url = "http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=" . $lastfmusername . "&limit=1&api_key=" . $vbulletin->options['sc_lastfm_current_apikey'];
         if (empty($lastfm_block["$post[userid]"]))
         { 
            if ($scrobbler_xml = file_get_contents($scrobbler_url))
            {
                    $scrobbler_data = simplexml_load_string($scrobbler_xml);        
                    foreach ($scrobbler_data->recenttracks AS $recenttrack)
                    {       
                      foreach ($recenttrack->children() AS $track)
                      {
                         if ($track['nowplaying'] == true)
                         {
                            $trackname = $track->name;
                            $trackartist = $track->artist;
                            $trackurl = $track->url;
                            $trackimageurl = $track->image[0];
                            eval('$lastfm_block["$post[userid]"] = "' . fetch_template('sc_lastfm_current_box') . '";');
                            $template_hook['postbit_userinfo_right_after_posts'] .= $lastfm_block["$post[userid]"];
                         }       
                      }                          
                    }
                    unset($trackname, $trackartist, $trackimageurl, $lastfmusername, $trackurl);
            }            
         }
         else
         {   
            $template_hook['postbit_userinfo_right_after_posts'] .= $lastfm_block["$post[userid]"];
         }   
    }
    else
    {                  
        $template_hook['postbit_userinfo_right_after_posts'] .= '';
    }
}

Παράδειγμα *xml που επιστρέφει το last.fm:

Κώδικας: Επιλογή όλων

<recenttracks user="RJ" page="1" perPage="10" totalPages="3019">
  <track nowplaying="true">
    <artist mbid="2f9ecbed-27be-40e6-abca-6de49d50299e">Aretha Franklin</artist>
    <name>Sisters Are Doing It For Themselves</name>
    <mbid/>
    <album mbid=""/>
    <url>www.last.fm/music/Aretha+Franklin/_/Sisters+Are+Doing+It+For+Themselves</url>
    <date uts="1213031819">9 Jun 2008, 17&#58;16</date>
    <streamable>1</streamable>
  </track>
  ...
</recenttracks>
Έχετε κάποια ιδέα για το πως μπορώ να βελτιώσω το φόρτωμα της σελίδας;
Αν τραβήξω τις πληροφορίες ως JSON (δυνατότητα η οποία παρέχεται από το last.fm), μήπως θα βελτιωθεί η κατάσταση;

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Βελτίωση ταχύτητας στο φόρτωμα της σελίδας

Δημοσίευση από geomagas » 27 Δεκ 2013 23:26

Μην τραβάς τα δεδομένα σε κάθε page load.
Κάνε τα cache κάπου, για κάποιο χρονικό διάστημα, μικρό για το χρήστη αλλά μεγάλο για την php. (πχ 10sec?)

gdimi
Δημοσιεύσεις: 129
Εγγραφή: 18 Μαρ 2009 00:54
Τοποθεσία: Πειραιάς
Επικοινωνία:

Βελτίωση ταχύτητας στο φόρτωμα της σελίδας

Δημοσίευση από gdimi » 28 Δεκ 2013 10:00

geomagas έγραψε:Μην τραβάς τα δεδομένα σε κάθε page load.
Κάνε τα cache κάπου, για κάποιο χρονικό διάστημα, μικρό για το χρήστη αλλά μεγάλο για την php. (πχ 10sec?)
+1
"We will create a civilization of the Mind in Cyberspace. May it be more humane and fair than the world your governments have made before."

hybridwebs.gr

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες