Bandwidth is a concern for me, as well as size of files. By default index.php in the main directory is 18kb, with the file modifications reduces it to 9kb. This will also reduce the number of queries.
This is only useful, because I do not use the Calendar/Birthday features on my index.php.
If you do use the birthday features or calendar features turned on, this will cause a an error on page load. You must turn it off in the admincp!
Before attempting this, please backup the index.php. If you have hacked your index.php you must look at how I have done this simple file edit.
I do this each time I install a new version of vBulletin.
// get special data templates from the datastore
$specialtemplates = array(
'userstats',
'birthdaycache',
'maxloggedin',
'iconcache',
'eventcache',
'mailqueue'
);
Replace it with:
PHP Code:
// get special data templates from the datastore
$specialtemplates = array(
'userstats',
'maxloggedin',
'iconcache',
'mailqueue'
);
Find this code:
PHP Code:
// pre-cache templates used by all actions
$globaltemplates = array(
'ad_forumhome_afterforums',
'FORUMHOME',
'forumhome_event',
'forumhome_forumbit_level1_nopost',
'forumhome_forumbit_level1_post',
'forumhome_forumbit_level2_nopost',
'forumhome_forumbit_level2_post',
'forumhome_lastpostby',
'forumhome_loggedinuser',
'forumhome_moderator',
'forumhome_subforumbit_nopost',
'forumhome_subforumbit_post',
'forumhome_subforumseparator_nopost',
'forumhome_subforumseparator_post',
'forumhome_markread_script',
'forumhome_birthdaybit'
);
Replace the code with this:
PHP Code:
// pre-cache templates used by all actions
$globaltemplates = array(
'ad_forumhome_afterforums',
'FORUMHOME',
'forumhome_forumbit_level1_nopost',
'forumhome_forumbit_level1_post',
'forumhome_forumbit_level2_nopost',
'forumhome_forumbit_level2_post',
'forumhome_lastpostby',
'forumhome_loggedinuser',
'forumhome_moderator',
'forumhome_subforumbit_nopost',
'forumhome_subforumbit_post',
'forumhome_subforumseparator_nopost',
'forumhome_subforumseparator_post',
'forumhome_markread_script'
);
Ok, half way done!
Find this code:
PHP Code:
// ### TODAY'S BIRTHDAYS #################################################
if ($vbulletin->options['showbirthdays'])
{
if (!is_array($vbulletin->birthdaycache)
OR ($today != $vbulletin->birthdaycache['day1'] AND $today != $vbulletin->birthdaycache['day2'])
OR !is_array($vbulletin->birthdaycache['users1'])
)
{
// Need to update!
require_once(DIR . '/includes/functions_databuild.php');
$birthdaystore = build_birthdays();
DEVDEBUG('Updated Birthdays');
}
else
{
$birthdaystore = $vbulletin->birthdaycache;
}
switch ($today)
{
case $birthdaystore['day1']:
$birthdaysarray = $birthdaystore['users1'];
break;
if (!$eventinfo['singleday'] AND !$eventinfo['recurring'] AND $eventinfo['dateline_from_user'] < gmmktime(0, 0, 0, $todaydate['mon'], $todaydate['mday'], $todaydate['year']))
{
$sub = -3;
}
else if ($eventinfo['holidayid'])
{
$sub = -2;
}
else if ($eventinfo['singleday'])
{
$sub = -1;
}
else
{
$sub = $eventinfo['dateline_from_user'] - (86400 * (intval($eventinfo['dateline_from_user'] / 86400)));
}
if ($vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
{
if ($eventinfo['userid'] == $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewothersevent'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
{
if (!$eventinfo['recurring'] AND !$vbulletin->options['showeventtype'] AND !$eventinfo['singleday'] AND cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year']))
{
$events["$eventid"][] = $gettime . "_$sub";
}
else
{
while ($iterations < $vbulletin->options['showevents'])
{
$addcache = false;
$todaydate = getdate($gettime);
if ($eventinfo['holidayid'] AND $eventinfo['recurring'] == 6)
{
if ($eventinfo['recuroption'] == "$todaydate[mon]|$todaydate[mday]")
{
$addcache = true;
}
}
else if (cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year']))
{
$addcache = true;
}
if ($addcache)
{
if (!$vbulletin->options['showeventtype'])
{
$events["$eventid"][] = $gettime . "_$sub";
}
else
{
$events["$gettime"][] = $eventid;
}
$eventcount++;
}
$iterations++;
$gettime += 86400;
}
}
}
}
}
if (!empty($events))
{
if ($vbulletin->options['showeventtype'])
{
ksort($events, SORT_NUMERIC);
}
else
{
function groupbyevent($a, $b)
{
if ($a[0] == $b[0])
{
return 0;
}
else
{
$values1 = explode('_', $a[0]);
$values2 = explode('_', $b[0]);
if ($values1[0] != $values2[0])
{
return ($values1[0] < $values2[0]) ? -1 : 1;
}
else
{
// Same day events. Check the event start time to order them properly (compare number of seconds from 00:00)
return ($values1[1] < $values2[1]) ? -1 : 1;
}
}
}
uasort($events, 'groupbyevent');
// this crazy code is to remove $sub added above that ensures a event maintains its position after the sort
// if associative values are the same
foreach($events AS $eventid => $times)
{
foreach ($times AS $key => $time)
{
$events["$eventid"]["$key"] = intval($time);
}
}
}
None of these changes will make any difference to your bandwidth. PHP is executed on the server, the php-files are never downloaded to the client so it does not use any bandwidth.
Also removing those parts of the code wil not make any difference to performance as it is already not executed if these options are turned off.
Well... to be really, really, really strict.... Removing some code will actually make it run "a little" faster. Because at least the "if" is executed, and if you remove that, you are getting one instruction off.
Doing some testing on my server... if I remove that code, I get a performance gain of 0.00002 seconds, that means, after the 50,000 visitor, I get one second worth of better performance!
What I am trying to say is that, unless you have more than 50,000 visitors per minute. Don't bother doing this.....
And... as it has been said, none of this has any effect on bandwidth. The size of the scripts is totally different to the size of the generated page sent to the user.
That's right. It doesn't matter.
The query doesn't get executed if the option is disabled.
And no, the filesize is not an indicative. You may save *a little* memory by loading less code, and you save the 2E-5 executing time of the "if" instruction. The size of the file itself doesn't matter at all.
This is not really useful, because the performance "gain" is really really too small. You'd need to have a huge amount of traffic. Even with 5000 users online it would make no difference at all. Even with 10,000.........
This is not the correct way of doing optimizations. Turn debug mode, and check where the bottlenecks are. A large memory-usage query, a long running one, php code that has high complexity or too much recursion. Removing code that doesn't get executed anyway doesn't make any difference and it's only fooling yourself. Do some benchmarks and test by yourself.