Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Compress Forum Templates (Speed up your Forums & Save Bandwidth) Details »»
Compress Forum Templates (Speed up your Forums & Save Bandwidth)
Version: 2.8, by Trigunflame Trigunflame is offline
Developer Last Online: Nov 2019 Show Printable Version Email this Page

Version: 3.0.7 Rating:
Released: 04-13-2005 Last Update: Never Installs: 95
 
No support by the author.

Compress Forum Templates & Phrases
Speed up your Forums & Save Bandwidth


Description:

Hi, this is a pretty simple hack that involves compressing the 'compiled' version of your templates, this way it only compresses the part thats to be shown on the forum and not the actual template data you edit.

Background:

Got the idea from Zero Tolerance in buro9's thread:
https://vborg.vbsupport.ru/showthread.php?t=69787

The above hack compresses the page at parse time, while it provides some speed enhancement, on large pages you can actually "negate" the point of using the hack in the first place, because of the overhead in compression.

Thus, the creation of this hack is to provide similiar functionality, but done in the adminCP; and without the overhead of constant compression.

Info:

No Queries. Only query is used when compressing your templates, the rest of the time its just pulling the templates straight out of the database like normal.

Updates:

Version 2.8 - Added Strip Whitespace from Start of JS Line by buro9
Version 2.7 - Option to strip HTML Comments from Compressed Output
Version 2.6 - Removed Phrase Compression altogether, Too Iffy
Version 2.5 - Removed the ASCII \n removal, emails should work now.
Version 2.4 - Had to add editor_jsoptions_size to the Bad Templates array, it also was causing a font selection error.
Version 2.3 - Added Phrase compression support, should help further increase page compression.
Version 2.2 - Slightly Recoded Template compression for faster results.
Version 2.1 - Added php_include templates to bad templates, will not compress these.
Version 2.0 - Recoded Script, added support for certain templates to not compress
Version 1.9 - Re-Added support for InLine Styles.
Version 1.8 - Removed support for InLine Styles, all Style data is left with Linebreaks.
Version 1.7 - Removed support for InLine Javascript, all JavaScript is left with Linebreaks.
Version 1.6 - Fixed Tab problem, tabs are replaced with a single space
Version 1.5 - Removed a part of the SQL.
Version 1.4 - TOTALLY Remade, Works perfect now; Ultimate Compression
Version 1.3 - Adjusted Again
Version 1.2 - Adjusted Stripping regex
Version 1.1 - Added Uncompress Support
Version 1.0 - Release

Install:

Step 1. [ Open admincp/template.php ]
Step 2. [ Go to about line: 1278, or just look for $_REQUEST['do'] == 'edit' ]
Step 3. [ Above Step 2, add the below code ]

PHP Code:
// #############################################################################
// Rebuild Templates Compressed
if ($_REQUEST['do'] == 'compressall')
{
    
/**
     * Compress Templates Mod
     *
     * Thanks for Idea From Zero Tolerance.
     * Thanks for Help & Support From buro9
     *
     * @author Trigunflame
     * @version 2.8
     * @copyright Dusty Burns, 2005-2006
     */

    // Strip Comments?
    // Use true or false
    
$stripComments true;

    
// Search & Replace
    
$search  = array('/\s+/''/\t+/'); 
    
$replace ' '
    
$jsearch  = array('/^\s+/''/\t+/');
    
$jreplace = array(''' ');
    
    
// Strip Comments
    
if ($stripComments) { $search[] = '/<!--.*?-->/'; }
    
    
// List of Templates to NOT Compress
    
$badTemplates = array(
        
'editor_jsoptions_font',
        
'editor_jsoptions_size',
        
'phpinclude_start',
        
'phpinclude_end'
    
);
            
    
// Get Modified Templates
    
$templates $DB_site->query(
        
"SELECT templateid, title, template_un " 
        
"FROM " TABLE_PREFIX "template " .
        
"WHERE template_un <> '' "
    
);
    
    
// Selectively Compress
    
while ($template $DB_site->fetch_array($templates))
    {
        
// Compile Template
        
$compiledTemplate compile_template($template['template_un']);
        
        
// Bad Template
        
if (in_array(strtolower($template['title']), $badTemplates))
        {
            
// Ignoring Template
            
echo "Bad Template [" $template['templateid'] . "] " $template['title'] . "<br />\n";
            
            
$compressedTemplate $compiledTemplate;
        }
        
        
// Reverting Template
        
else if ($_REQUEST['revert'])
        {
            
// Uncompressing
            
echo "Uncompressing [" $template['templateid'] . "] " $template['title'] . "<br />\n";
            
            
$compressedTemplate $compiledTemplate;
        }
        
        
// Good Template
        
else
        {
            
// Compressing
            
echo "Compressing [" $template['templateid'] . "] " $template['title'] . "<br />\n";
            
            
// Get All Lines
            
$compiledTemplate preg_split('(\r\n|\r|\n)'$compiledTemplate);
            
            
// Javascript Status
            
$js false;

            
// Compressed Output
            
$compressedTemplate '';
            
            
// Loop Lines
            
foreach ($compiledTemplate AS $line)
            {
                
// LowerCase Line
                
$lowerLine strtolower($line);
                
                
// Look For Start of JavaScript
                
if (strpos($lowerLine'<script') !== false) { $js true; }
                
                
// Check For Null
                
if (trim($line) == '') continue;
    
                
// Check JS Status
                
if (!$js && !$st)
                {
                    
// Full WhiteSpace Strip
                    
$line preg_replace($search$replace$line);
                }
                else
                {
                    
// Straight Output
                    
$line preg_replace($jsearch$jreplace$line) . "\r\n";
                }

                
// Look For End of JavaScript
                
if (strpos($lowerLine'</script>') !== false) { $js false; }
                
                
// Check For Null
                
if (trim($line) == '') continue;
                
                
// Append Line
                
$compressedTemplate .= $line;
            }
        }
        
        
// Update Template
        
$DB_site->query(
            
"UPDATE " TABLE_PREFIX "template " 
            
"SET template = '" addslashes($compressedTemplate) . "' " 
            
"WHERE templateid = '" $template['templateid'] . "'"
        
);
    }
    
    
// Redirect
    
print_cp_redirect('index.php?do=home'1);
    
    
/**
     * End Compress Templates Mod
     */

Step 4. [ close admincp/template.php and open admincp/index.php ]
Step 5. [ look for ]

PHP Code:
construct_nav_option($vbphrase['find_updated_templates'], 'template.php?do=findupdates''<br />'); 
Step 6. [ below this, add the code ]

PHP Code:
construct_nav_option("Compress Templates"'template.php?do=compressall''<br />');
construct_nav_option("Uncompress Templates"'template.php?do=compressall&revert=1''<br />'); 
How-To Run

1. Install
2. In the admincp left navigation, select "Compress Templates".
3. Repeat Step 2 after each modification of your Templates whenever you decide to change something.
4. If you want to uncompress all Templates, select "Uncompress Templates"
5. IF Any Templates Come Out Weird, add the template Name to the Bad Templates Array and Re-Run the Compress Templates.

Supporters / CoAuthors

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #52  
Old 04-16-2005, 10:42 AM
buro9 buro9 is offline
 
Join Date: Feb 2002
Location: London, UK
Posts: 585
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Nope, everything else is working fine... editors doing their job, popups where needed are working (attachments, i have a translate hack, buddy list, thread replies, etc).

So just that one very small adjustment... and frankly, for the benefit this hack gives I'd opt for the editing of the footer template over reducing the compression the hack does.
Reply With Quote
  #53  
Old 04-16-2005, 10:43 AM
buro9 buro9 is offline
 
Join Date: Feb 2002
Location: London, UK
Posts: 585
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Trigunflame
Buro, did you try the new version? Mutli-Line javascript is left in its standard format short of tabs.
Hehe, maybe not

I'll upgrade now
Reply With Quote
  #54  
Old 04-16-2005, 10:51 AM
buro9 buro9 is offline
 
Join Date: Feb 2002
Location: London, UK
Posts: 585
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It works, but I had to add a line break.

I'm not sure what version of footer I customised (most likely the vb3 beta one that I've been dragging through each update), but it had the <script block directly following the DST correction block:

</if><script

For some reason that I don't want to look into , it would not recognise that as a JS block and was compressing it.

If I moved the <script onto a new line like thus:
</if>
<script

Then it worked perfectly.

As I said though... the footer template is one I modified in vb a long time ago... so this is likely not an issue as viewing the original now shows that they are indeed on new lines already and thus work perfectly.

If anyone has old templates that they've modified though, they hopefully will read this and add the linebreak
Reply With Quote
  #55  
Old 04-16-2005, 10:53 AM
boeserwolf boeserwolf is offline
 
Join Date: Jan 2004
Location: Styria / Austria
Posts: 59
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi

And here is the german translation for all german users:
Reply With Quote
  #56  
Old 04-16-2005, 11:12 AM
Trigunflame's Avatar
Trigunflame Trigunflame is offline
 
Join Date: Aug 2002
Posts: 742
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Update:

Removed support for inline javascript, all javascript stays line-per-line.
Removed support for inline styles, all style data stays line-per-line.
Reply With Quote
  #57  
Old 04-16-2005, 11:16 AM
boeserwolf boeserwolf is offline
 
Join Date: Jan 2004
Location: Styria / Austria
Posts: 59
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Would you please tell me what to change in the code, so that I can change it in the translation too?
Reply With Quote
  #58  
Old 04-16-2005, 11:18 AM
Rambo Rambo is offline
 
Join Date: Oct 2003
Location: Scotland, UK
Posts: 58
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hrm,

Here's a little problem with the latest version.
Reply With Quote
  #59  
Old 04-16-2005, 11:26 AM
Trigunflame's Avatar
Trigunflame Trigunflame is offline
 
Join Date: Aug 2002
Posts: 742
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Rambo
Hrm,

Here's a little problem with the latest version.
Ok, will try and contact; someone else is having same problem.
Reply With Quote
  #60  
Old 04-16-2005, 12:01 PM
Trigunflame's Avatar
Trigunflame Trigunflame is offline
 
Join Date: Aug 2002
Posts: 742
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Update:

Im workin on the solution, ive identied the problem as a special template.
Reply With Quote
  #61  
Old 04-16-2005, 12:11 PM
Trigunflame's Avatar
Trigunflame Trigunflame is offline
 
Join Date: Aug 2002
Posts: 742
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Update;

Finished, everyone use the newest version of the code.

Problem was a certain template that delt with fonts available from drop down menu, they were being compressed also, causing errors.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:57 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04676 seconds
  • Memory Usage 2,365KB
  • Queries Executed 26 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (3)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete