Menu

What can I do to speed up my page load times?

2015-01-27
2015-01-27
  • Shattered Oath

    Shattered Oath - 2015-01-27

    I have a roster page on my guild's website. It's working fine, but it loads very slowly. It's currently up at: http://199.168.190.18/~shattere/roster.php

    I imagine it's slow because it's frequently pulling a ton of data from the armory. I've tried adjusting the TTL values in CacheControl.class.php, making them all 86400, but my roster page still seems to load slowly every hour.

    Am I doing something wrong in my code, is there some other thing I can change?

    Here's the code for my roster page, minus my nasty CSS.

    debug('emblem',TRUE) // Enable this is if toons with special characters break the API. // $armory->UTF8(TRUE); // Set the locale. Will default back to region default if not defined. English normally. // us.battle.net: en_US, es_MX // eu.battle.net: en_GB, es_ES, fr_FR, ru_RU, de_DE // kr.battle.net: ko_KR // tw.battle.net: zh_TW // battlenet.com.cn: zh_CN $armory->setLocale('en_US'); // To reset back to default server locale //$armory->setLocale(FALSE); // To exclude some fields from characters to load. $armory->characterExcludeFields(array('achievements','quests')); // To reset the exclude list to not exclude anymore //$armory->characterExcludeFields(FALSE); // Load all the guild data into an object. This is NOT an array $guild = $armory->getGuild('Shattered Oath'); // Adding guild rank names to all members. // Supply a valid array starting with key 0. Remember to add enough ranks. $approvedRanks = array(0, 1, 3, 7); // Sets the ranks displayed in the raid roster. $guild_ranks = array(0=>'Bowser', 1=>'Magikoopa', 2=>'Hammer Brother', 3=>'Koopa Troopa', 4=>'Boo', 5=>'Yoshi!', 6=>'Goomba', 7=>'Bob-omb', 8=>'Chain Chomp' ); $guild->setGuildRankTitles($guild_ranks); $class_names = array(1=>'Warrior', 2=>'Paladin', 3=>'Hunter', 4=>'Rogue', 5=>'Priest', 6=>'Death Knight', 7=>'Shaman', 8=>'Mage', 9=>'Warlock', 10=>'Monk', 11=>'Druid' ); // Get an array with all members and basic information sorted // sort can be name|class|race|gender|level|rank // sortflag can be asc | desc $members = $guild->getMembers('rank','asc'); foreach($members as $member): if ( ! in_array($member['rank'], $approvedRanks) ) continue; // Get the character object. Will return FALSE if the // character could not be found or character is frozen. $name = $member['character']['name']; $character = $armory->getCharacter($name); // Return character news feed. New bosses killed, new items won, etc. $feed = $character->getFeed(); // Return the amount of achievement points for the loaded character $achievementpoints = $character->getAchievementPoints(); // Get active talent tree $activetalents = $character->getActiveTalents(); // Return an array with equipped gear and itemlevel stats. $gear = $character->getGear(); // Returns the complete URL for a character inset image $profileinseturl = $character->getProfileInsetURL(); ?>
                        <br/>
                        <?php echo "<img src=\"".$profileinseturl."\">"; ?><br/>
                        <?php echo("Guild Rank: ".$guild_ranks[$member['rank']]); ?><br/>
                        <?php echo("Name: ".$member['character']['name']); ?><br/>                      
                        <?php echo("Active Talents: ".$member['character']['spec']['name']); ?><br/>
                        <?php echo("Class: ".$class_names[$member['character']['class']]); ?><br/>
                        <?php echo("Item Level: ".$gear['averageItemLevel']); ?><br/>
                        <?php echo("Achievement Points: ".$member['character']['achievementPoints']); ?><br/>
    
                        <ul>
                                <?php
                                        $i = 0;
                                        foreach ( $feed as $event ) {
                                                if ( $event['type'] == 'CRITERIA' ) continue;
                                                $i++;
    
                                                echo('<li>');
                                                echo($name . ' has ');
                                                if ( $event['type'] == 'BOSSKILL' ) {
                                                        $boss = str_replace(' kills ', '', $event['achievement']['title']);
                                                        $boss = str_replace(' defeats ', '', $boss);
                                                        echo('defeated ' . $boss . '.');
                                                } else if ( $event['type'] == 'LOOT' ) {
                                                        echo('received <a href="#" rel="item=' . $event['itemId'] . '">' . $event['itemId'] . '</a>.');
                                                } else if ( $event['type'] == 'ACHIEVEMENT' ) {
                                                        echo('earned [' . $event['achievement']['title'] . '].');
                                                }
                                                echo('</li>');
    
                                                if ( $i > 4 ) break;
                                        }
                                ?>
                        </ul>
    
                        <hr style="height: 5px; width: 600px; float: left; color: #000000; background-color:#000000;">
                        <br/>
    
    '; print_r($guild); echo ''; ?>
     
  • Shattered Oath

    Shattered Oath - 2015-01-27

    I resolved this problem, the TTL values that needed to be changed were in BattlenetArmory.class.php, then I created a CRON job to get the page once a day.

     

Log in to post a comment.

MongoDB Logo MongoDB