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
  #42  
Old 07-18-2011, 10:53 AM
final kaoss final kaoss is offline
 
Join Date: Apr 2006
Posts: 1,314
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No, I never did set expires, I'm using this in my htaccess. If you want to compare the load times on my site, select the df2 skin at the bottom left.

Code:
# Author: Matty Asia
# Version 1.6
# Downloaded from: http://www.vbulletin.com/forum/showthread.php?325798
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "Mozilla/4\.76 \[en\] \(Windows NT 5\.0; U\)"
RewriteRule .* - [F,L]
Options +FollowSymLinks
### THIS IS A LITTLE EXTRA SECURITY AND CAN BE REMOVED
#RewriteRule ^includes/(.*) index.php
#RewriteRule ^vb/(.*) index.php
#RewriteRule ^packages/(.*) index.php
### THIS IS THE ACTUAL REWRITE
RewriteRule ^threads/([0-9]+)(?:/?$|(?:-[^/]+))(?:/?$|(?:/page([0-9]+)?)) showthread.php?t=$1&page=$2&%{QUERY_STRING}
RewriteRule ^members/([0-9]+) member.php?u=$1&%{QUERY_STRING}
RewriteRule ^forums/([0-9]+)(?:/?$|(?:-[^/]+))(?:/?$|(?:/page([0-9]+)?)) forumdisplay.php?f=$1&page=$2&%{QUERY_STRING}
RewriteRule ^blogs/([0-9]+)(?:/?$|(?:-[^/]+))(?:/?$|(?:/page([0-9]+)?)) blog.php?u=$1&page=$2&%{QUERY_STRING}
RewriteRule ^entries/([0-9]+)(?:/?$|(?:-[^/]+))(?:/?$|(?:/page([0-9]+)?)) entry.php?b=$1&page=$2&%{QUERY_STRING}
RewriteRule ^list/([^/]*/)([0-9]+) list.php?r=$1$2&%{QUERY_STRING}
RewriteRule ^content/(.*) content.php?r=$1&%{QUERY_STRING}
RewriteRule ^widget/config/([0-9]+) widget.php?r=config/$1&%{QUERY_STRING}
RewriteRule ^((urllist|sitemap).*\.(xml|txt)(\.gz)?)$ vbseo_sitemap/vbseo_getsitemap.php?sitemap=$1 [L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^$ $1.php?r=$2 [QSA]


####Gzip
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)(js|css|php)$ redir.php?file=$1$2&type=$2 [L]
</IfModule>
## Rewrites
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]


# Forum
RewriteRule ^threads/.* showthread.php [QSA]
RewriteRule ^forums/.* forumdisplay.php [QSA]
RewriteRule ^members/.* member.php [QSA]
RewriteRule ^blogs/.* blog.php [QSA]
ReWriteRule ^entries/.* entry.php [QSA]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# MVC
RewriteRule ^(?:(.*?)(?:/|$))(.*|$)$ $1.php?r=$2 [QSA]
ErrorDocument 404 /404.php
ErrorDocument 403 /404.php
ErrorDocument 500 /404.php








# Cache static content for 1 MONTH
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4|css|js|txt|xml)$">

Header set Cache-Control "max-age=2592000, public, must-revalidate"

</FilesMatch>

# Remove ETag headers
Header unset Pragma
FileETag None
Header unset ETag

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
Quote:
Originally Posted by Osbes View Post
Hello extreme-gaming,

no problem, i putted up the template changes in codeboxes again

The extra > and < is to indicate what should be replaced by what, but i understand that it is a little unhandy, if you want to select-copy-replace multiple lines.

I am adding icons step by step. Thats why the Logo is currently not added.

It is weird, that you didnt noticed a significant drop in the requests, using the addon. Can you send me a link, so i can try your implementation in the test skin?


I think you set the expires entity-header and cache-control header in your htaccess for images, right? This should behave totally independent to my addon.

I just double checked this an its working correct on our forum.

My Browsers sends:
Code:
GET /images/sprites/sprite.png HTTP/1.1
If-Modified-Since: Sun, 17 Jul 2011 21:49:42 GMT
and gets as response
Code:
HTTP/1.1 304 Not Modified
and then he loads the file from the browser-cache.

So that this isnt working on your forum seems also a little bit weird. Please send me a link, so i can check this in your test skin and the corresponding .httacces file, so i can check your cache settings.

Best regards
Sebastian
Without it installed.

http://www.webpagetest.org/result/110718_F8_12XTQ/

Page Speed 1.9 Score: 80/100
Load time 3.018 seconds on second load
Requests 8
KB's 35
F A A B B

With it installed.
http://www.webpagetest.org/result/110718_5T_12XVE/

Page Speed 1.9 Score: 80/100
Load time 2.935 seconds on second load
Requests 8
KB's 64

F A A B C

So I wind up losing a grade and on the forum refresh, it's noticeable that the images reload on the test skin
Reply With Quote
  #43  
Old 07-18-2011, 11:30 AM
Osbes Osbes is offline
 
Join Date: Jul 2008
Posts: 106
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I didnt unterstand the Grading behind webpagetest.org, but as you can see, you gained alot of Performance using this addon.

Without addon
  • First View
    Load Time: 5.161s
    Requests: 78
  • Repeat View
    Load Time: 2.405s
    Requests: 8


With addon
  • First View
    Load Time: 3.759s
    Requests: 59
  • Repeat View
    Load Time: 2.387s
    Requests: 8

So the performance is better in any aspect using this addon. Your Load Time dropped significant 1.5 seconds on the first view.

As far as i can see, your grading only dropped cause on the second test (with addon) there is an additional
Code:
http://pagead2.googlesyndication.com/pagead/images/ad_choices_en.png
,but this isnt coming from our addon. Maybe you gained additional google ad since the forum is faster, using adaptiv ad strategies? This would be a big bonus.
Reply With Quote
  #44  
Old 07-18-2011, 02:28 PM
giorgino giorgino is offline
 
Join Date: Dec 2009
Posts: 122
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Mooff View Post
@giorgino

In the ACP go to
-> Forum Manager
-> search for the forum you want to edit
-> edit forum
-> scroll down to 'Style Options'
-> Prefix for Forum Status Images --> add your forum prefix there (you can have a different one for each forum - and you need to add the prefix in your subforums as well, if you want the special icons to show up there). For forums which should use the default icons - do nothing.

you then need icons which are named accordingly
So if your forum prefix is, let's say, 'sc2_'
you need the following additional icons
sc2_forum_new-48.png
sc2_forum_old-48.png
sc2_subforum_new-48.png
sc2_subforum_old-48.png

In your ../statusicons folder.
GREAT! Work perfect!!!
Reply With Quote
  #45  
Old 07-18-2011, 04:12 PM
Osbes Osbes is offline
 
Join Date: Jul 2008
Posts: 106
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If someone of you are using CDNs, please update to the latest version (0.6.2)
Reply With Quote
  #46  
Old 07-20-2011, 04:26 PM
final kaoss final kaoss is offline
 
Join Date: Apr 2006
Posts: 1,314
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

with this installed. This get's reported

Code:
The following images served from vgchat.info should be combined into as few images as possible using CSS sprites.

    /images/buttons/collapse_40b.png
   /images/buttons/search.png
    /images/misc/arrow.png
    /images/misc/blog/top-highlight.png
    /images/misc/forum_stats.png
    /images/misc/navbit-home.png
    /images/misc/tab-collapsed.png
For showforum:

Code:
The following images served from vgchat.info should be combined into as few images as possible using CSS sprites.

    /images/buttons/collapse_40b.png
    /images/buttons/lastpost-right.png
    /images/buttons/search.png
   /images/buttons/sortarrow-asc.png
    /images/misc/arrow.png
    /images/misc/black_downward_arrow.png
    /images/misc/navbit-arrow-right.png
    /images/misc/navbit-home.png
    /images/misc/tag.png
    /images/site_icons/forum.png
    /images/site_icons/homepage.png
   /images/site_icons/profile.png
   /images/statusicon/thread-16-right.png
    /images/statusicon/thread_dot-16-right.png
   /images/statusicon/thread_hot-16.png
    /images/statusicon/thread_hot-30.png
    /images/statusicon/thread_hot_new-16.png
   /images/statusicon/thread_lock-16.png
    /images/statusicon/thread_new-16.png
   /images/statusicon/thread_old-30.png
Add these to the next update?
Reply With Quote
  #47  
Old 07-20-2011, 04:34 PM
giorgino giorgino is offline
 
Join Date: Dec 2009
Posts: 122
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I've a big problem. My attachments aren's visible anymore (error 404)
Can you help me?
Reply With Quote
  #48  
Old 07-20-2011, 08:41 PM
Osbes Osbes is offline
 
Join Date: Jul 2008
Posts: 106
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello extreme-gaming,
i have currently added icons from FORUMHOME to the sprite, but yes the next step will be adding icons from SHOWFORUM.

----------------------------------
  • /images/misc/forum_stats.png

This image is replaced in the last version.
I see, that you are using some additional stats, so these add this image antoher time. Please replace

Code:
<img alt="Spam-O-Matic Statistics" src="images/misc/forum_stats.png" title="Spam-O-Matic Statistics">
with

Code:
<span class="sprite_misc_forum_stats" title="Spam-O-Matic Statistics" ></span>
but be aware that "Spam-O-Matic Statistics" could be an phrase, so look first in your template.

Do this also for "Visitors found this page by searching for:" and "Video Game Chat - Vbulletin Statistics"

----------------------------------
  • /images/buttons/search.png
  • /images/misc/arrow.png
  • /images/misc/navbit-home.png

These images will be supportet in the next bigger addon with a lot of icons from SHOWFORUM (0.7.0 or maybe earlier).

----------------------------------
  • /images/misc/tab-collapsed.png
  • /images/misc/tab-expanded.png

These images could be replaced within this addon, but not in the near future, since i have to modify an vBulletin-Javascript what will increase my workload to support this addon a lot with every vBulletin Update just to save 2 images.

----------------------------------
  • /images/buttons/collapse_40b.png
  • /images/buttons/collapse_40b_collapsed.png

These images will never be replaced within this addon, since it is used by many other addons and as long as you didnt change everything to using sprites it will need a second Javascript-file just to manipulate the className-attribute instead of the scr-attribute.
vBulletin has to do this.

----------------------------------
  • /images/misc/blog/top-highlight.png

I am not sure whether or not i will add this icon, since it looks like an gradient and i am not sure whether or not i will create an second sprite for gradients. I would advise using CSS3 for gradients (just like digital point did with his addon for gradients): https://vborg.vbsupport.ru/showthread.php?t=263393

Best regards
Sebastian
Reply With Quote
  #49  
Old 07-20-2011, 08:56 PM
Osbes Osbes is offline
 
Join Date: Jul 2008
Posts: 106
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello giorgino,
i haven't added anything in connection to the attachment-system in this addon, so i didnt belive, that this problem has to do anything with it.


as far as i can see, you are using nginx and vbseo rewrite for attachments? an am i correct, that you problem is, that attachment-urls like http://www.propit.it/attachments/f66...-.4.09-005.jpg resolve into an 404 error? since our forum use nginx and vbseo too, i think i can help you anyway.

vbseo will rewirte the url of yout attachments to something like "attachments/f66/372d1280162113-firma-nostro-libro-ospiti-stlegdv14-1-1-.4.09-005.jpg". in our nginx configuration, nginx deliver jpeg directly and doesnt check each time if they exists, so it could use vbseo if it didnt exists.
since we didnt wanted to change this behavior of nginx we drop the rewrite of attachments with vbseo. hope this could help you.

Best regards
Sebastian
Reply With Quote
  #50  
Old 07-20-2011, 11:25 PM
Mooff Mooff is offline
 
Join Date: Mar 2010
Posts: 301
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Another quick word on gradients.
I'm not so sure whether we should implement them at all. Those gradients are mostly used for background manipulation and in the styles i made for our board i used those gradients in many places. Places they weren't used in the default vb version and i removed them in a lot of backgrounds where vbulletin has them.
I personally think it will be impossible for us to create the addon in a way that we will automatically find all the places where you have used this one particular gradient - and will end up in serving the background some times via sprite and some times via icon.

But you can add those gradients in the sprite yourself. Since 0.6.0 we have added the
posibility to add custom icons into the sprite via the plugin-hook sprite_add_icon.
Be aware that this option is meant for experienced users and will probably stay that way for a long time. That aside, if you are using a modded style it gives the style designer the opportunity to offer a plugin to our addon, which includes all his additional graphics.
Reply With Quote
  #51  
Old 07-21-2011, 06:57 PM
Makaveli007 Makaveli007 is offline
 
Join Date: Jun 2008
Posts: 65
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i receive the following on vb4.1.4 when clicking refresh

Call to undefined function imagecreatetruecolor() in /home/makaveli/public_html/admincp/sprite.php on line 653

any ideas?
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 07:14 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.16817 seconds
  • Memory Usage 2,401KB
  • 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
  • (8)bbcode_code
  • (5)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
  • (4)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