Go Back   vb.org Archive > vBulletin Modifications > vBulletin 4.x Modifications > vBulletin 4.x Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
United-Forum CSS Sprites - ludicrous speed - NOW! Details »»
United-Forum CSS Sprites - ludicrous speed - NOW!
Version: 0.7.2, by Osbes Osbes is offline
Developer Last Online: Feb 2013 Show Printable Version Email this Page

Category: Board Optimization - Version: 4.x.x Rating:
Released: 07-11-2011 Last Update: 08-05-2011 Installs: 267
Uses Plugins Auto-Templates
Additional Files Is in Beta Stage  
No support by the author.

tl;dr Makes your forum faster.

Want an easy one-click installation for this addon? . Vote for this jira-entry

Add on currently is in beta stage

When visiting a website, speed is a very important factor not only for users but crawlers as well. Long loading times are a nuisance since your time is basically wasted during the waiting period. Hence, we are trying everything we can in order to speed up our site. One great way to improve loading times is by the use of css sprites. Unfortunately these are not implemented by vBulletin.

We therefore decided to develop our own css-sprite add on for vBulletin boards and want to share this code with the worldwide vBulletin community.

Live demo
The add on is permanently running in our vBulletin board ( > 2.000.000 posts), take a look:
http://www.united-forum.de

The add on will be supported via this thread. If you have any questions, issues, improvements or feedback regarding this add on, please feel free to post a comment or write us a pm at any time. We are happy to discuss

vBulletin performance using css sprites
Our tests are based on version 0.7.0. We used the analytic tools firebug network utility and the googlelabs.com page speed site

on the client side the following parameter were used:
download speed: 5.7 MBit/s
ping: 31ms




css sprites - what are they?
The intention behind css sprites is the bundling of many small graphics into one large graphic in order to decrease the number of required http requests. This shortens the loading times of the given website. In addition, the the accumulated size of all small graphics is higher than the size of the sprite due to reasons of compression.
You can find further information in a great article by Chris Coyier.
What is the gain in using css sprites?
Aside from the technical implementation, the question on how much one actually does gain by using css sprites is of the most interest. Obviously they decrease loading times - but how important are small loading times and what is the impact on vBulletin overall loading times?

A short time ago, Jasper Aguila pointed out that speed is one crucial stickiness factor in his blog on vBulletin.com.
Quote:
Originally Posted by Jasper Aguila vBulletin Support
The internet has unfortunately contributed to the exponential decrease in attention span for many individuals. That's why this decade is seeing a trend in emerging technologies emphasizing the importance of speed request. It's crucial for your content to be promptly distributed in a timely manner, else bounce rate will increase - making you lose returning visitors. It's also important to note that slow sites may be penalized by search engines.

With better browsers, more powerful processors, and improved technologies constantly releasing each year, it's becoming quite difficult to provide excuses for slow loading pages. Therefore, try optimizing your server for speed. Read up and learn optimization techniques at vBulletin.com's Server Configuration forum.
In addition, the google ranking is influenced by the site speed as well.

Google Webmaster Central Blog
Quote:
Originally Posted by 09.04.2010 - Google Webmaster Central Blog
You may have heard that here at Google we're obsessed with speed, in our products and on the web. As part of that effort, today we're including a new signal in our search ranking algorithms: site speed. Site speed reflects how quickly a website responds to web requests.
vBseo Webmaster Mert G?k?eimam
Quote:
CSS sprites is a huge bonus for big boards , any big board owner definately should use it.
Last but not least, not only the user's loading time is reduced, but also does the server load decrease as the server will have to handle a lot less of http requests. This clears available connections and cpu time.
Add on features
In the current released beta version 0.7.2, sprites are available for FORUMHOME and FORUMDISPLAY. Coming up next SHOWTHREAD.

Sprites are created style based for all forum styles and saved in a folder which you can set via the imgdir_sprite stylevar. You have one additional button in the ACP (CSS-Sprites -> Refresh) which automatically creates all sprites, the according css definitions and includes those css definitions in the vBulletin css rollup files.
Installation

First of all, if you didnt want to change the templates manually, install the Template Modification System (TMS). Now proceed with the installation:
  • upload the contents of the upload folder into your forum home directory.
  • import the add on in the ACP
  • upon installation a new stylevar imgdir_sprite will be created. Update this stylevar based on your file structure - default value is the vbulletin sprite directory. Make sure the folder is writable, else the sprites can't be saved!
  • create the sprites via the ACP at CSS-Sprite using the Refresh option.
  • If you have installed TMS, you are done now. This was an easy gained speed up, not? If you didnt installed TMS and didnt want to do it, proceed with the next point:
  • in order to use the sprites, you then will have to edit some templates. The diffs (xou will find it in the do_not_upload folder show which parts you have to delete '<' and which parts to add '>' In addition, on top find the lines in which you will find the respective code.[/b]

Download Now

File Type: xml product-sprite-0.7.2.xml (51.9 KB, 1699 views)
File Type: zip sprite_0.7.2.zip (22.0 KB, 2769 views)

Screenshots

File Type: jpg forumdisplay_default.jpg (151.3 KB, 0 views)
File Type: png forumdisplay_sprites_070.png (70.8 KB, 0 views)
File Type: jpg forumhome_default.jpg (145.6 KB, 0 views)
File Type: png forumhome_sprites_070.png (66.6 KB, 0 views)
File Type: jpg nachher_forumdisplay.jpg (96.6 KB, 0 views)
File Type: jpg nachher_forumhome.jpg (94.1 KB, 0 views)

Supporters / CoAuthors

Show Your Support

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

Comments
  #12  
Old 07-14-2011, 07:06 PM
Barbaro Barbaro is offline
 
Join Date: Apr 2008
Posts: 30
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Exactly, it hurts, I will be pending for 4.1.5.

Good mod, thanks

regards
Reply With Quote
  #13  
Old 07-15-2011, 04:08 AM
cherylferraro cherylferraro is offline
 
Join Date: Oct 2005
Location: California
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Not working for me but I think this will be fantastic when it's fully functional. Thank you for working on it
Reply With Quote
  #14  
Old 07-15-2011, 07:00 AM
Mooff Mooff is offline
 
Join Date: Mar 2010
Posts: 301
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

While posing a bug report please include
- vBulletin Version
- full bug description (what, where, whether you did the template edits ...)
(if possible link to your site where the addon is active)

so we can fix whatever the problem is.
Reply With Quote
  #15  
Old 07-15-2011, 04:23 PM
cherylferraro cherylferraro is offline
 
Join Date: Oct 2005
Location: California
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

VB version 4.1.4 patch 1

Bug description: Uploaded the files and did the template edits on a test style. Set 777 permissions on sprite folder and refreshed CSS-Sprites via admincp. No sprites were generated, or if they were they were not added to the images/sprites folder. I can't find the sprites. I guess it goes without saying that the status icons were not displayed on forumhome.

I tried uninstalling and then reinstalling. It still didn't work.

Thanks again for your work on this mod. It will be a great addition to vb.
Reply With Quote
  #16  
Old 07-15-2011, 04:53 PM
Osbes Osbes is offline
 
Join Date: Jul 2008
Posts: 106
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Are you using the PHP GD Libary? This addon currently doens't support ImageMagick.
Which Version of the PHP GD Libary is installed?

If you are currently not using the PHP GD Libary or it is older than GD2, please install/update GD and try it agein.

If you are using GD2, please send me via PN the output of
PHP Code:
<?php
phpinfo
();
and the output after refreshing the css-sprites via admincp.

If possible, please check your php error-logs if if some errors related to the sprite.php occurred.




Big Big Thanks for the nice feedback
Reply With Quote
  #17  
Old 07-16-2011, 04:56 PM
cherylferraro cherylferraro is offline
 
Join Date: Oct 2005
Location: California
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you for your prompt response. Based upon the info you provided I was able to get the sprite generation issue sorted out. The sprite has been generated and now resides in the images/sprites directory.

On to the next issue. I made the template edits in a test style but the status icons do not display on forumhome. The test style is user selectable (testing sprites) if you would like to take a look to see if you can determine what I've done to break your very useful mod

The link is: http://www.browncafe.com/forum/

I just took a look at the sprite-css templates and they are all empty. Is that working as intended or was I supposed to put some css in there myself?
Reply With Quote
  #18  
Old 07-16-2011, 05:47 PM
Osbes Osbes is offline
 
Join Date: Jul 2008
Posts: 106
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi, thanks for your feedback, i just wanted you to ask, whether the sprite-main.css Template is empty or not, since http://www.browncafe.com/forum/clien...prite-main.css was empty.

The templates should be filled automatically after the sprite is generated. I suggest, that the problem is somehow related to your first issue.

What was your solution for this?

Can you insert some debug messages to see, whether the templates are filled or not?

PHP Code:
                    if(empty($template))
                    {
                        
$vB_Database->query_write('
                            INSERT INTO
                                `' 
TABLE_PREFIX 'template`
                            SET
                                title =       "sprite-main.css",
                                styleid =     ' 
$vB_Database->sql_prepare($style['styleid']) . ',
                                template =    ' 
$vB_Database->sql_prepare(compile_template($cssrule)) . ',
                                template_un = ' 
$vB_Database->sql_prepare($cssrule) . ',
                                dateline =    ' 
TIMENOW ',
                                username =    "unitedforum",
                                version =     ' 
$vB_Database->sql_prepare('0.5.0') . ',
                                product =     "sprite",
                                mergestatus = "none"
                        '
);

var_dump("INSERT");
                    }
                    else
                    {
                        
$vB_Database->query_write('
                            UPDATE
                                `' 
TABLE_PREFIX 'template`
                            SET
                                version =     ' 
$vB_Database->sql_prepare('0.5.0') . ',
                                template =    ' 
$vB_Database->sql_prepare(compile_template($cssrule)) . ',
                                template_un = ' 
$vB_Database->sql_prepare($cssrule) . ',
                                dateline =    ' 
TIMENOW '
                            WHERE
                                templateid =  ' 
$vB_Database->sql_prepare($template['templateid']) . '
                        '
);

var_dump("UPDATE");
                    } 
I suggest, that the script dies after

PHP Code:
                    imagepng($spriteDIR '/' $sprite_filepath);
                    
imagedestroy($sprite); 
Which is just before the SQL-Statements. Thats why i think, that it is related to your first issue.
Reply With Quote
  #19  
Old 07-16-2011, 08:05 PM
cherylferraro cherylferraro is offline
 
Join Date: Oct 2005
Location: California
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The sprite was generated after I enabled GD to be the image processor.

I am unsure where to put the text for the debug messages you provided so I made a wild guess and pasted that text onto the end of sprite.php. Is that where it is supposed to go?

After refreshing CSS-Sprites via admin panel the sprite-main.css and all of the other css sprite templates are still empty.
Reply With Quote
  #20  
Old 07-16-2011, 11:14 PM
Osbes Osbes is offline
 
Join Date: Jul 2008
Posts: 106
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The debug messages are for us to identify your problem. Please send them to me via private message.

I am currently putting the final touch on the next version. Aside performance improvements it will include addtional log output in the acp visible each time the sprites are refreshed. These messages should be helpful to identify and solve problems like yours.

Once you have the new version installed please copy everything which shows up and also send it to me via private message.
Reply With Quote
  #21  
Old 07-16-2011, 11:25 PM
Mooff Mooff is offline
 
Join Date: Mar 2010
Posts: 301
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

0.6.0 is now live! (changelog will be translated tomorrow, it's 2:30am in germany right now )


Since most of you are still hesitant about the addon i want to give you some numbers:

Without the addon we had ~55* http requests on FORUMHOME. Now we are left with 17. That's a difference of 38 http requests per click.
Let's say you have a small board with 500 pageimpressions on FORUMHOME each day. Makes 19000 http requests you save a day. 570000 requests a month!
Now imagine a big board with 50000 pageimpressions. 57 million saved http requests each month.

Believe me,
your users want you to use css sprites.
your server wants you to use them.
and google wants you to use them.


Sidenote: With the new version we included the member profile popupmenu. Which means not only FORUMHOME is affected now but you save up to 7 http requests on almost every page of your forum - yikes.


*number does vary with number of threads using a threadicon. Threads in our board usually do not have one, so on other boards this number might easily be a lot higher.
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 06:19 PM.


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.05696 seconds
  • Memory Usage 2,402KB
  • Queries Executed 27 (?)
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
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (2)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (17)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (8)postbit_attachment
  • (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
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete