SlideShare ist ein Scribd-Unternehmen logo
1 von 69
The Need for Speed
- How to make your site REALLY fast! -


 http://gdig.de/sydney2
                                            Sydney, April 2013



  Bastian Grimm, Managing Partner - Grimm Digital - @basgr
About me


SEO Trainings, Seminars & Strategy Consulting




WordPress Security, Consulting & Development



                                                         @basgr
Berlin-based Full-Service Performance Marketing Agency



                                                                  2
Get the Slide-Deck




             http://gdig.de/sydney2
Read the full story here: http://gdig.de/1o
“We encourage you to start
looking at your site's speed - not
only to improve your ranking
in search engines, but also to
improve everyone's experience
on the Internet.”
- Amit Singhal & Matt Cutts, Google Search Quality Team
One (simple) goal only:
Make your site as fast as you can!



                  Can you get, what Amazon got?
                1%+ in revenue for every
                   100 ms in speed.
                  Amazon study: http://gdig.de/amzn100
Web-based performance analysis
  using the „Google factors”..




         https://developers.google.com/pagespeed/
Detailed in-browser
performance analysis
  (req. Firebug Add-on)
YSlow! break-down:
Pre- and post-caching.
GWT Site Performance Info

                    This is really not so good…!




high load times = high bounce rate = loosing in SERP 1:1‘s

                             https://www.google.com/webmasters/tools/
GWT Site Performance Info




                        Image Source: http://gdig.de/1p
RUM: Real User Measurement

<script>
      _gaq.push(['_setAccount','UA-XXXX-X']);
      _gaq.push(['_setSiteSpeedSampleRate', 100]);
      _gaq.push(['_trackPageview']);
</script>


  Google Analytics > Content > Site Speed
Collects all the data, 1% default sampling rate (customizable)!




                             I “heard” this Rum is
                                also fairly good…


                                            Analytics Documentation: http://gdig.de/1q
Real user’s avg.
page load times
#1: Reduce amount of requests
Get rid of multiple CSS & JS files
          8 JS + 4 CSS req. on a single page is a bad idea!




   Move CSS to the top, JS to the              Often times JS does change the
   footer to un-block rendering!              style, so always do CSS before JS!


                    Best case: 1 CSS + 1 JS file.
                    Real world: 1-2 CSS, 1 int. + 2-3 ext. JS
Do CSS Sprites




      Combine multiple (small) images into one
        big image to save on HTTP requests.

                                         http://spriteme.org/
www.spritecow.com
Tip: Balance parallelizable resources

                                     Even modern browsers don‘t
                                       allow 6+ connections per
                                     hostname at the same time!




     Using img1/img2/imgX.domain.com allows balancing
        requests to and between multiple sub-domains
    The result: A massive 6+ connections at a time.

                                      http://www.browserscope.org/
#2: Decrease size of request(s)
Minify CSS & JS files

                                               Minifying this (small) style-
                                              sheet results in 63% savings!


                                           For CSS, try:
                                           http://www.phpied.com/cssmin-js/
                                           http://developer.yahoo.com/yui/compressor/

                                           For JS, go with:
                                           http://www.crockford.com/javascript/jsmin.html
                                           https://developers.google.com/closure/compiler



      Removing unnecessary whitespaces, line-
      breaks and comments to reduce file-size.
     And: Makes it way harder for competitors to steal your code!
Enable GZIP compression



                                          Verify by checking the response
                                          headers, for “Content-Encoding“
                                                 to be set to “gzip“


         On Apache, try “mod_deflate” which is straight forward:
      AddOutputFilterByType DEFLATE text/html text/plain text/xml



    Output compression does massively decrease
    file-sizes and therefore speeds up rendering.

                              One of the ugliest sites ever: http://www.gzip.org/
Why would I do that?



Based on jQuery Version 1.9.1 …

        Normal             Minified   GZIP‘ed   Min. + GZIP‘ed
        271 KB              90 KB     78 KB         32 KB




        ~88% savings in file size due to combining
              minifying with compression.
                                                                 22
Tip: Use Live HTTP Headers in Firefox




    To easily check request and response objects as well as
      their headers, try Live HTTP Headers or Fire Cookie.

              https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/
Use a cookie-less domain



                                       Live HTTP headers reveals that no
                                         cookies are set for gstatic.com




      For static files, cookies are not required -
        disable cookie handling all together.

                 http://www.ravelrumba.com/blog/static-cookieless-domain/
Tip: How to get rid of Cookies…

                   Straight forward: Don’t set them…!



          Apache header manipulation using “mod_headers”:
               RequestHeader unset Cookie

             Stop cookies being passed back to the client :
                  Header unset Set-Cookie

    Same goes for other components (like PHP, Java and the
   like) – each does provide functionality to disable Cookies.


                       http://httpd.apache.org/docs/2.4/mod/mod_headers.html
#3: Implement proper caching
Setup caching for static resources

                  Expires:              Set the “Expires”-header to exactly
       Fri, 07 Sept 2013 03:18:06 GMT   one year ahead of the request date


               Last-Modified:           Set the “Last-Modified”-header to
       Fri, 07 Sept 2012 03:18:06 GMT   the date the file was last modified


              Cache-Control:            Set the “Cache-Control: max-age”-
              max-age=3153600           header to “3153600” (1 year, again)




 It’s important to specify one of Expires or Cache-Control max-age,
    and one of Last-Modified or ETag, for all cacheable resources.
Some caching pitfalls…

            <link rel="stylesheet" type="text/css"
   href="/styles/83faf15055698ec77/my.css" media="screen" />

                                              Use URL fingerprinting to force
                                              refreshing of cached resources.

   But don’t use parameters to indicate
    versions – Squid et. al have issues ;)

             <link rel="stylesheet" type="text/css"
   href="/styles/my.css?v=83faf15055698ec77" media="screen" />


                                             If you want to cache SSL contents,
Header append Cache-Control                     make sure to have the “Cache
 "public, must-revalidate"                   control“-header to contain public.
#4: Clean-up that source-code
Remove HTML comments




                                                ANT can remove HTML
                                               comments at build-time
                                              using a ReplaceRegEx task




     There is no need for HTML comments on a
    live system, remove them during build-time.

                Or try this one: http://code.google.com/p/htmlcompressor/
Move inline CSS / JS to external files




      Make the HTML as small as possible. Move
      out inline CSS and JS to make it cache-able.
Don’t scale images using width / height



                                  The image dimensions are 220x93,
                                  but onsite it’ll be shown as 100x42.




    Small images = less file-size. Don’t scale down
     images using attributes, provide small ones!
Tip: Make images even smaller!



                                                     Use tinyPNG to optimize
                                                    PNG files without loosing in
                                                    quality (up to 70% savings)
JPEGmini does the same for JPEG
files and will reduce your images
  massively (up to 80% smaller)!




                                    http://tinypng.org/ & http://www.jpegmini.com/
Try jQuery Lazy Load
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>


                                   Embed jQuery + Lazy Load Plug-in


<img class="lazy" src="default.jpg" data-original="real-image.jpg"
width="640" height="480" alt="sometext" />



$("img.lazy").lazyload();                      Provide default + real image,
                                                 also include dimensions.


                            Execute the loader…



                                     http://www.appelsiini.net/projects/lazyload
Don’t use empty href- / src-attributes




                             IE makes a request to the directory in
                                   which the page is located.
                            Safari & Chrome make a request to the
                                       actual page itself.




    Empty “href” & “src” attributes can make your
     site slow – they’re requesting themselves.
Don’t use @import in CSS
 <link rel="stylesheet" type="text/css" href="/styles/my.css" />



                                       Always load CSS files
                                     using link-rel HTML tags.
 <style type="text/css">
 @import "/styles/my.css";
 @import url("/styles/my.css") screen;
 </style>


                                    Especially in external CSS, this
                                      will make your mama cry!


       Using CSS @import in external CSS makes it
     impossible for browsers to download in parallel.
#5: Consider asynchronous requests
Off-load components into AJAX fragments

                                            NO! Not this one…!



                                   I know: You guys are SEOs… you want
                                       ALL contents being crawl-able.
                                   So, use with care… like for filters, etc.




      AJAX = Asynchronous JavaScript And XML
  Using AJAX fragments does not block page loading!

            Credits: http://flic.kr/p/RGtz - AJAX Crawling: http://gdig.de/ajxcrwl
Some details about <script> …

    <script src="script.js" [...] async="async"></script>

   allows script to be downloaded in
  background without blocking. Having
   finished, rendering is blocked and
         script will be executed.


                                           Same - except it guarantees that
                                        scripts execute in the order they were
                                           specified within HTML mark-up.



    <script src="script.js" [...] defer="defer"></script>



                                                                                 39
Image Credits: http://bit.ly/YRTom2
The Google Approach




                      41
How about HeadJS?


                        The beauty: Only a single JS
                       needs to be loaded in <head>!




      HeadJS does enable parallelizing JS file
        downloads. Freaking awesome!

                                            http://headjs.com/
#6: Optimize your MySQL setup
Use the Slow Query Log

[mysqld]                                   Pro tip: Make sure to use “log-
log-slow-queries = my-slow.log          queries-not-using-indexes” option to
long_query_time = 5                     find SELECTs without proper indices!
log-queries-not-using-indexes



# Run the Perl script:               Get slow log parser to know how many
sudo ./mysql_slow_log_parser.pl      times queries appear, they take to exec.
/var/log/my-slow.log > slow.out          and which are the worst ones!




        MySQL seems to be slow - but no idea why?
           Enable “log-slow-queries” in my.cnf

                                  Log parser download: http://gdig.de/slgparse
Get your queries right!

                                                Pro tip: All “SELECT * FROM X”
      Adding a proper index                  statements can be pre-pended with
         would fix this!                             “EXPLAIN …” – use it!



EXPLAIN SELECT id, firstname, lastname FROM employee WHERE id=1;

+----------+------+---------------+------+---------+------+------+------------+
| table    | type | possible_keys | key | key_len | ref | rows | Extra        |
+----------+------+---------------+------+---------+------+------+------------+
| employee | ALL | NULL           | NULL | NULL    | NULL | 200 | where used |
+----------+------+---------------+------+---------+------+------+------------+



       A huge amount of MySQL queries suffer from bad
      coding. Make sure to setup & use indices properly!

                               http://dev.mysql.com/doc/refman/5.1/en/explain.html
Don’t do search using MySQL

     Neither MATCH
    AGAINST nor LIKE
     queries are fast!


  SELECT * FROM table WHERE
  MATCH (field1, field2)
  AGAINST ('query');


      Searching in MySQL is a performance killer!
       Consider switching to a real search server.

                   http://lucene.apache.org/solr/ & http://sphinxsearch.com/
Consider “simple” table optimizations

                              Do you really need “BIGINT”,
                                maybe “INT” is enough?

 Sure, this string will ever have that
 many characters – “VARCHAR(20)”             Also required to keep indexes in
        vs. “VARCHAR(255)”?                     memory by trimming the
                                                        overhead!




       Consider carefully how to setup your database
            tables. It makes a huge difference!
Prioritize statements properly

                                 Use “INSERT DELAYED” to execute
                                INSERTs without blocking other stuff!
 INSERT DELAYED INTO xyz
 (bla, blubb) VALUES
 ('val1', 'val2');                You need this data REALLY fast?
                                  “SELECT HIGH PRIORITY” helps!

 SELECT HIGH_PRIORITY foo,
 bar FROM XYZ;




       Do you need some data faster than other?
    Do you care about results of INSERT statements?
Make your server faster!




         If you’re lazy: Use MySQLTuner to
              get recommendations for
           optimizing your my.cnf settings




   There is a pretty good reason, MySQL comes with
     different pre-configuration files - Use them!

                               https://github.com/rackerhacker/MySQLTuner-perl
Consider master- / slave-setups



                                                     read-only
      write




                 replicate

    MySQL replication is awesome – use different
       servers for reading and writing data.

         http://de.slideshare.net/osscube/mysql-performance-tuning-top-10-tips
#7: Optimize hosting & web-servers
Get reliable hosting




    Reliable hosting is key – make sure to choose a
         provider that fits your requirements.
                               A starting point: http://gdig.de/ushosts
If you’re on Apache…

                                            Pro tip: “Small” stuff like
                                          disabling .htaccess can really
                                             improve performance!




      Google does provide “mod_pagespeed” to
     implement their best practices – give it a try!

                     https://developers.google.com/speed/pagespeed/mod
Or maybe: Consider replacing Apache…




  “nginx” is ridiculously fast – especially when serving
     static assets it’s probably the best you’ll find!

                                           http://www.nginx.com/
And: Reverse-proxy incoming requests
                                    All requests will be passed
                                 through a proxy, no direct access
  squid-cache.org                  to web-servers will be given.
  Optimising Web Delivery




        Get load off your web-server by setting up a
         dedicated box in front using SQUID Cache.

                                           http://www.squid-cache.org/
#8: Optimize your PHP setup
Use memcached sessions only!

                                           memcached comes with a
      php.ini settings                   custom PHP session handler -
                                          put session data straight to
                                              your servers RAM.


 session.save_handler = memcached
 session.save_path = "localhost:11211"




 By default, PHP will store session information on your
     servers HDDs – no good for high traffic sites!


                         http://php.net/manual/en/intro.memcached.php
Get a PHP accelerator

                                           What you need to know:
                                         PHP code will be complied for
                                         each request during runtime.




    By using an accelerator like APC you can cache
    functions, objects and much more in memory.
    Better: It does also cache compiled byte-code!
                      http://devzone.zend.com/1812/using-apc-with-php/
Try out PHP-FPM




 Read the full article: http://interfacelab.com/nginx-php-fpm-apc-awesome/




                    FastCGI Process Manager for PHP
       …is an alternative PHP FastCGI implementation with some additional
            features useful for sites of any size, especially busier sites.

                                                                             http://php-fpm.org/
#9: Always be the first one to know!
Heavy load testing: blitz.io




                               http://blitz.io/
Site-uptime & performance: pingdom




                          http://www.pingdom.com/
Application & service monitoring: icinga




                              https://www.icinga.org/
Automated testing: GTmetrix




                              http://gtmetrix.com/api/
#10: Bit of a Cheat…
You could just buy me a beer!
Use Google’s CDN for popular libraries



                                Since a lot of site-owners are using
                                 G-DCs, chances are, people have
                                    those files cached already!




  Google has the fastest CDN on the planet, make sure
    you use their DCs to serve your files if possible!

                          https://developers.google.com/speed/libraries/
Off-load other stuff to a CDN




 Latency is crucial – especially if you’re serving a global audience,
   offloading statics to a CDN will give additional performance.

                                           CDN Overview: http://gdig.de/cdns
Thanks! Questions?
     mail@grimm-digital.com
     twitter.com/basgr
     linkedin.com/in/bastiangrimm
     facebook.com/grimm.digital

       http://gdig.de/sydney2

Bastian Grimm, Managing Partner - Grimm Digital - @basgr

Weitere ähnliche Inhalte

Was ist angesagt?

More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...Shift Conference
 
Real World Web Standards
Real World Web StandardsReal World Web Standards
Real World Web Standardsgleddy
 
Drupal performance and scalability
Drupal performance and scalabilityDrupal performance and scalability
Drupal performance and scalabilityTwinbit
 
[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web Design[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web DesignChristopher Schmitt
 
Hyperlight Websites - Chris Zacharias
Hyperlight Websites - Chris ZachariasHyperlight Websites - Chris Zacharias
Hyperlight Websites - Chris ZachariasChristopher Zacharias
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Nicholas Zakas
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and RenderingStoyan Stefanov
 
Deploying
DeployingDeploying
Deployingsoon
 
20 tips for website performance
20 tips for website performance20 tips for website performance
20 tips for website performanceAndrew Siemer
 
A web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentationA web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentationJustin Dorfman
 
Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892
Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892
Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892Deepak Sharma
 
Mehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp KölnMehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp KölnWalter Ebert
 
Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!Nicholas Zakas
 
How We Build NG-MY Websites: Performance, SEO, CI, CD
How We Build NG-MY Websites: Performance, SEO, CI, CDHow We Build NG-MY Websites: Performance, SEO, CI, CD
How We Build NG-MY Websites: Performance, SEO, CI, CDSeven Peaks Speaks
 
Improving the Responsive Web Design Process in 2016
Improving the Responsive Web Design Process in 2016Improving the Responsive Web Design Process in 2016
Improving the Responsive Web Design Process in 2016Cristina Chumillas
 

Was ist angesagt? (20)

Diy frozen snow globe
Diy frozen snow globeDiy frozen snow globe
Diy frozen snow globe
 
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
 
Real World Web Standards
Real World Web StandardsReal World Web Standards
Real World Web Standards
 
Drupal performance and scalability
Drupal performance and scalabilityDrupal performance and scalability
Drupal performance and scalability
 
HTML5
HTML5HTML5
HTML5
 
[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web Design[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web Design
 
Hyperlight Websites - Chris Zacharias
Hyperlight Websites - Chris ZachariasHyperlight Websites - Chris Zacharias
Hyperlight Websites - Chris Zacharias
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and Rendering
 
[heweb11] HTML5 Makeover
[heweb11] HTML5 Makeover[heweb11] HTML5 Makeover
[heweb11] HTML5 Makeover
 
Deploying
DeployingDeploying
Deploying
 
20 tips for website performance
20 tips for website performance20 tips for website performance
20 tips for website performance
 
A web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentationA web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentation
 
Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892
Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892
Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892
 
Mehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp KölnMehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp Köln
 
YSlow 2.0
YSlow 2.0YSlow 2.0
YSlow 2.0
 
WordCamp Praga 2015
WordCamp Praga 2015WordCamp Praga 2015
WordCamp Praga 2015
 
Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!
 
How We Build NG-MY Websites: Performance, SEO, CI, CD
How We Build NG-MY Websites: Performance, SEO, CI, CDHow We Build NG-MY Websites: Performance, SEO, CI, CD
How We Build NG-MY Websites: Performance, SEO, CI, CD
 
Improving the Responsive Web Design Process in 2016
Improving the Responsive Web Design Process in 2016Improving the Responsive Web Design Process in 2016
Improving the Responsive Web Design Process in 2016
 

Andere mochten auch

Andere mochten auch (20)

WordPress Optimization & Security - ThinkVisibility 2012, Leeds
WordPress Optimization & Security - ThinkVisibility 2012, LeedsWordPress Optimization & Security - ThinkVisibility 2012, Leeds
WordPress Optimization & Security - ThinkVisibility 2012, Leeds
 
Citizen Citation
Citizen CitationCitizen Citation
Citizen Citation
 
scanvoor online
scanvoor onlinescanvoor online
scanvoor online
 
#Saveus
#Saveus#Saveus
#Saveus
 
Ocene2011 12 p2_01
Ocene2011 12 p2_01Ocene2011 12 p2_01
Ocene2011 12 p2_01
 
ACi-TV
ACi-TVACi-TV
ACi-TV
 
Clave secreta y pública
Clave secreta y públicaClave secreta y pública
Clave secreta y pública
 
New Doc 8
New Doc 8New Doc 8
New Doc 8
 
Practica 4
Practica 4Practica 4
Practica 4
 
Curriculum vitae
Curriculum vitaeCurriculum vitae
Curriculum vitae
 
WE310+300B
WE310+300BWE310+300B
WE310+300B
 
Rob poster pdf
Rob poster pdfRob poster pdf
Rob poster pdf
 
Lugo fecoht
Lugo fecohtLugo fecoht
Lugo fecoht
 
skydrive_word_doc
skydrive_word_docskydrive_word_doc
skydrive_word_doc
 
Presentation MMEPL Business Plan V1 26 07 2016
Presentation MMEPL Business Plan V1 26 07 2016Presentation MMEPL Business Plan V1 26 07 2016
Presentation MMEPL Business Plan V1 26 07 2016
 
Dir iiee 2016
Dir iiee 2016Dir iiee 2016
Dir iiee 2016
 
Presentation on the First ever Reality Musical Travelogue in the history of w...
Presentation on the First ever Reality Musical Travelogue in the history of w...Presentation on the First ever Reality Musical Travelogue in the history of w...
Presentation on the First ever Reality Musical Travelogue in the history of w...
 
Oxus to Kabul- CASA 1000 Survey - SNC Lavalin Canada- An Asian Development Ba...
Oxus to Kabul- CASA 1000 Survey - SNC Lavalin Canada- An Asian Development Ba...Oxus to Kabul- CASA 1000 Survey - SNC Lavalin Canada- An Asian Development Ba...
Oxus to Kabul- CASA 1000 Survey - SNC Lavalin Canada- An Asian Development Ba...
 
SEO for Large Ecommerce Sites - Adam Audette's SMX West Presentation
SEO for Large Ecommerce Sites - Adam Audette's SMX West PresentationSEO for Large Ecommerce Sites - Adam Audette's SMX West Presentation
SEO for Large Ecommerce Sites - Adam Audette's SMX West Presentation
 
Eletricidade básica ( Senai )
Eletricidade básica ( Senai )Eletricidade básica ( Senai )
Eletricidade básica ( Senai )
 

Ähnlich wie The Need for Speed - SMX Sydney 2013

The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014Bastian Grimm
 
implement lighthouse-ci with your web development workflow
implement lighthouse-ci with your web development workflowimplement lighthouse-ci with your web development workflow
implement lighthouse-ci with your web development workflowWordPress
 
DrupalCampLA 2011 - Drupal frontend-optimizing
DrupalCampLA 2011 - Drupal frontend-optimizingDrupalCampLA 2011 - Drupal frontend-optimizing
DrupalCampLA 2011 - Drupal frontend-optimizingAshok Modi
 
A little journey into website optimization
A little journey into website optimizationA little journey into website optimization
A little journey into website optimizationStelian Firez
 
On-Page SEO EXTREME - SEOZone Istanbul 2013
On-Page SEO EXTREME - SEOZone Istanbul 2013On-Page SEO EXTREME - SEOZone Istanbul 2013
On-Page SEO EXTREME - SEOZone Istanbul 2013Bastian Grimm
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax ApplicationsSiarhei Barysiuk
 
High performance website
High performance websiteHigh performance website
High performance websiteChamnap Chhorn
 
Performace optimization (increase website speed)
Performace optimization (increase website speed)Performace optimization (increase website speed)
Performace optimization (increase website speed)clickramanm
 
Frontend performance
Frontend performanceFrontend performance
Frontend performancesacred 8
 
Building high performing web pages
Building high performing web pagesBuilding high performing web pages
Building high performing web pagesNilesh Bafna
 
Heavy Web Optimization: Frontend
Heavy Web Optimization: FrontendHeavy Web Optimization: Frontend
Heavy Web Optimization: FrontendVõ Duy Tuấn
 
Minimize website page loading time – 20+ advanced SEO tips
Minimize website page loading time – 20+ advanced SEO tipsMinimize website page loading time – 20+ advanced SEO tips
Minimize website page loading time – 20+ advanced SEO tipsCgColors
 
Client Side Optimization
Client Side OptimizationClient Side Optimization
Client Side OptimizationPatrick Huesler
 
[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web Design[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Drupal Frontend Performance and Scalability
Drupal Frontend Performance and ScalabilityDrupal Frontend Performance and Scalability
Drupal Frontend Performance and ScalabilityAshok Modi
 
[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWDChristopher Schmitt
 
Csdn Drdobbs Tenni Theurer Yahoo
Csdn Drdobbs Tenni Theurer YahooCsdn Drdobbs Tenni Theurer Yahoo
Csdn Drdobbs Tenni Theurer Yahooguestb1b95b
 

Ähnlich wie The Need for Speed - SMX Sydney 2013 (20)

The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
 
implement lighthouse-ci with your web development workflow
implement lighthouse-ci with your web development workflowimplement lighthouse-ci with your web development workflow
implement lighthouse-ci with your web development workflow
 
DrupalCampLA 2011 - Drupal frontend-optimizing
DrupalCampLA 2011 - Drupal frontend-optimizingDrupalCampLA 2011 - Drupal frontend-optimizing
DrupalCampLA 2011 - Drupal frontend-optimizing
 
A little journey into website optimization
A little journey into website optimizationA little journey into website optimization
A little journey into website optimization
 
Speed!
Speed!Speed!
Speed!
 
On-Page SEO EXTREME - SEOZone Istanbul 2013
On-Page SEO EXTREME - SEOZone Istanbul 2013On-Page SEO EXTREME - SEOZone Istanbul 2013
On-Page SEO EXTREME - SEOZone Istanbul 2013
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
 
High performance website
High performance websiteHigh performance website
High performance website
 
Performace optimization (increase website speed)
Performace optimization (increase website speed)Performace optimization (increase website speed)
Performace optimization (increase website speed)
 
Frontend performance
Frontend performanceFrontend performance
Frontend performance
 
Building high performing web pages
Building high performing web pagesBuilding high performing web pages
Building high performing web pages
 
performance.ppt
performance.pptperformance.ppt
performance.ppt
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
 
Heavy Web Optimization: Frontend
Heavy Web Optimization: FrontendHeavy Web Optimization: Frontend
Heavy Web Optimization: Frontend
 
Minimize website page loading time – 20+ advanced SEO tips
Minimize website page loading time – 20+ advanced SEO tipsMinimize website page loading time – 20+ advanced SEO tips
Minimize website page loading time – 20+ advanced SEO tips
 
Client Side Optimization
Client Side OptimizationClient Side Optimization
Client Side Optimization
 
[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web Design[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web Design
 
Drupal Frontend Performance and Scalability
Drupal Frontend Performance and ScalabilityDrupal Frontend Performance and Scalability
Drupal Frontend Performance and Scalability
 
[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD
 
Csdn Drdobbs Tenni Theurer Yahoo
Csdn Drdobbs Tenni Theurer YahooCsdn Drdobbs Tenni Theurer Yahoo
Csdn Drdobbs Tenni Theurer Yahoo
 

Mehr von Bastian Grimm

Migration Best Practices - Peak Ace on Air
Migration Best Practices - Peak Ace on AirMigration Best Practices - Peak Ace on Air
Migration Best Practices - Peak Ace on AirBastian Grimm
 
SEOday Köln 2020 - Surprise, Surprise - 5 SEO secrets
SEOday Köln 2020 - Surprise, Surprise - 5 SEO secretsSEOday Köln 2020 - Surprise, Surprise - 5 SEO secrets
SEOday Köln 2020 - Surprise, Surprise - 5 SEO secretsBastian Grimm
 
Technical SEO vs. User Experience - Bastian Grimm, Peak Ace AG
Technical SEO vs. User Experience - Bastian Grimm, Peak Ace AGTechnical SEO vs. User Experience - Bastian Grimm, Peak Ace AG
Technical SEO vs. User Experience - Bastian Grimm, Peak Ace AGBastian Grimm
 
Advanced data-driven technical SEO - SMX London 2019
Advanced data-driven technical SEO - SMX London 2019Advanced data-driven technical SEO - SMX London 2019
Advanced data-driven technical SEO - SMX London 2019Bastian Grimm
 
Migration Best Practices - SMX West 2019
Migration Best Practices - SMX West 2019Migration Best Practices - SMX West 2019
Migration Best Practices - SMX West 2019Bastian Grimm
 
Migration Best Practices - Search Y 2019, Paris
Migration Best Practices - Search Y 2019, ParisMigration Best Practices - Search Y 2019, Paris
Migration Best Practices - Search Y 2019, ParisBastian Grimm
 
Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018Bastian Grimm
 
Data-driven Technical SEO: Logfile Auditing - SEOkomm 2018
Data-driven Technical SEO: Logfile Auditing - SEOkomm 2018Data-driven Technical SEO: Logfile Auditing - SEOkomm 2018
Data-driven Technical SEO: Logfile Auditing - SEOkomm 2018Bastian Grimm
 
The need for Speed: Advanced #webperf - SEOday 2018
The need for Speed: Advanced #webperf - SEOday 2018The need for Speed: Advanced #webperf - SEOday 2018
The need for Speed: Advanced #webperf - SEOday 2018Bastian Grimm
 
OK Google, Whats next? - OMT Wiesbaden 2018
OK Google, Whats next? - OMT Wiesbaden 2018OK Google, Whats next? - OMT Wiesbaden 2018
OK Google, Whats next? - OMT Wiesbaden 2018Bastian Grimm
 
Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018Bastian Grimm
 
Migration Best Practices - SMX London 2018
Migration Best Practices - SMX London 2018Migration Best Practices - SMX London 2018
Migration Best Practices - SMX London 2018Bastian Grimm
 
Welcome to a new reality - DeepCrawl Webinar 2018
Welcome to a new reality - DeepCrawl Webinar 2018Welcome to a new reality - DeepCrawl Webinar 2018
Welcome to a new reality - DeepCrawl Webinar 2018Bastian Grimm
 
Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Bastian Grimm
 
Digitale Assistenzsysteme - SMX München 2018
Digitale Assistenzsysteme - SMX München 2018Digitale Assistenzsysteme - SMX München 2018
Digitale Assistenzsysteme - SMX München 2018Bastian Grimm
 
AMP - SMX München 2018
AMP - SMX München 2018AMP - SMX München 2018
AMP - SMX München 2018Bastian Grimm
 
How fast is fast enough - SMX West 2018
How fast is fast enough - SMX West 2018How fast is fast enough - SMX West 2018
How fast is fast enough - SMX West 2018Bastian Grimm
 
Whats Next in SEO & CRO - 3XE Conference 2018 Dublin
Whats Next in SEO & CRO - 3XE Conference 2018 DublinWhats Next in SEO & CRO - 3XE Conference 2018 Dublin
Whats Next in SEO & CRO - 3XE Conference 2018 DublinBastian Grimm
 
Migration Best-Practices: So gelingt der erfolgreiche Relaunch - SEOkomm 2017
Migration Best-Practices: So gelingt der erfolgreiche Relaunch - SEOkomm 2017Migration Best-Practices: So gelingt der erfolgreiche Relaunch - SEOkomm 2017
Migration Best-Practices: So gelingt der erfolgreiche Relaunch - SEOkomm 2017Bastian Grimm
 
Digitale Assistenten - OMX 2017
Digitale Assistenten - OMX 2017Digitale Assistenten - OMX 2017
Digitale Assistenten - OMX 2017Bastian Grimm
 

Mehr von Bastian Grimm (20)

Migration Best Practices - Peak Ace on Air
Migration Best Practices - Peak Ace on AirMigration Best Practices - Peak Ace on Air
Migration Best Practices - Peak Ace on Air
 
SEOday Köln 2020 - Surprise, Surprise - 5 SEO secrets
SEOday Köln 2020 - Surprise, Surprise - 5 SEO secretsSEOday Köln 2020 - Surprise, Surprise - 5 SEO secrets
SEOday Köln 2020 - Surprise, Surprise - 5 SEO secrets
 
Technical SEO vs. User Experience - Bastian Grimm, Peak Ace AG
Technical SEO vs. User Experience - Bastian Grimm, Peak Ace AGTechnical SEO vs. User Experience - Bastian Grimm, Peak Ace AG
Technical SEO vs. User Experience - Bastian Grimm, Peak Ace AG
 
Advanced data-driven technical SEO - SMX London 2019
Advanced data-driven technical SEO - SMX London 2019Advanced data-driven technical SEO - SMX London 2019
Advanced data-driven technical SEO - SMX London 2019
 
Migration Best Practices - SMX West 2019
Migration Best Practices - SMX West 2019Migration Best Practices - SMX West 2019
Migration Best Practices - SMX West 2019
 
Migration Best Practices - Search Y 2019, Paris
Migration Best Practices - Search Y 2019, ParisMigration Best Practices - Search Y 2019, Paris
Migration Best Practices - Search Y 2019, Paris
 
Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018
 
Data-driven Technical SEO: Logfile Auditing - SEOkomm 2018
Data-driven Technical SEO: Logfile Auditing - SEOkomm 2018Data-driven Technical SEO: Logfile Auditing - SEOkomm 2018
Data-driven Technical SEO: Logfile Auditing - SEOkomm 2018
 
The need for Speed: Advanced #webperf - SEOday 2018
The need for Speed: Advanced #webperf - SEOday 2018The need for Speed: Advanced #webperf - SEOday 2018
The need for Speed: Advanced #webperf - SEOday 2018
 
OK Google, Whats next? - OMT Wiesbaden 2018
OK Google, Whats next? - OMT Wiesbaden 2018OK Google, Whats next? - OMT Wiesbaden 2018
OK Google, Whats next? - OMT Wiesbaden 2018
 
Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018
 
Migration Best Practices - SMX London 2018
Migration Best Practices - SMX London 2018Migration Best Practices - SMX London 2018
Migration Best Practices - SMX London 2018
 
Welcome to a new reality - DeepCrawl Webinar 2018
Welcome to a new reality - DeepCrawl Webinar 2018Welcome to a new reality - DeepCrawl Webinar 2018
Welcome to a new reality - DeepCrawl Webinar 2018
 
Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018
 
Digitale Assistenzsysteme - SMX München 2018
Digitale Assistenzsysteme - SMX München 2018Digitale Assistenzsysteme - SMX München 2018
Digitale Assistenzsysteme - SMX München 2018
 
AMP - SMX München 2018
AMP - SMX München 2018AMP - SMX München 2018
AMP - SMX München 2018
 
How fast is fast enough - SMX West 2018
How fast is fast enough - SMX West 2018How fast is fast enough - SMX West 2018
How fast is fast enough - SMX West 2018
 
Whats Next in SEO & CRO - 3XE Conference 2018 Dublin
Whats Next in SEO & CRO - 3XE Conference 2018 DublinWhats Next in SEO & CRO - 3XE Conference 2018 Dublin
Whats Next in SEO & CRO - 3XE Conference 2018 Dublin
 
Migration Best-Practices: So gelingt der erfolgreiche Relaunch - SEOkomm 2017
Migration Best-Practices: So gelingt der erfolgreiche Relaunch - SEOkomm 2017Migration Best-Practices: So gelingt der erfolgreiche Relaunch - SEOkomm 2017
Migration Best-Practices: So gelingt der erfolgreiche Relaunch - SEOkomm 2017
 
Digitale Assistenten - OMX 2017
Digitale Assistenten - OMX 2017Digitale Assistenten - OMX 2017
Digitale Assistenten - OMX 2017
 

Kürzlich hochgeladen

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Kürzlich hochgeladen (20)

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

The Need for Speed - SMX Sydney 2013

  • 1. The Need for Speed - How to make your site REALLY fast! - http://gdig.de/sydney2 Sydney, April 2013 Bastian Grimm, Managing Partner - Grimm Digital - @basgr
  • 2. About me SEO Trainings, Seminars & Strategy Consulting WordPress Security, Consulting & Development @basgr Berlin-based Full-Service Performance Marketing Agency 2
  • 3. Get the Slide-Deck http://gdig.de/sydney2
  • 4. Read the full story here: http://gdig.de/1o
  • 5. “We encourage you to start looking at your site's speed - not only to improve your ranking in search engines, but also to improve everyone's experience on the Internet.” - Amit Singhal & Matt Cutts, Google Search Quality Team
  • 6. One (simple) goal only: Make your site as fast as you can! Can you get, what Amazon got? 1%+ in revenue for every 100 ms in speed. Amazon study: http://gdig.de/amzn100
  • 7. Web-based performance analysis using the „Google factors”.. https://developers.google.com/pagespeed/
  • 10. GWT Site Performance Info This is really not so good…! high load times = high bounce rate = loosing in SERP 1:1‘s https://www.google.com/webmasters/tools/
  • 11. GWT Site Performance Info Image Source: http://gdig.de/1p
  • 12. RUM: Real User Measurement <script> _gaq.push(['_setAccount','UA-XXXX-X']); _gaq.push(['_setSiteSpeedSampleRate', 100]); _gaq.push(['_trackPageview']); </script> Google Analytics > Content > Site Speed Collects all the data, 1% default sampling rate (customizable)! I “heard” this Rum is also fairly good… Analytics Documentation: http://gdig.de/1q
  • 14. #1: Reduce amount of requests
  • 15. Get rid of multiple CSS & JS files 8 JS + 4 CSS req. on a single page is a bad idea! Move CSS to the top, JS to the Often times JS does change the footer to un-block rendering! style, so always do CSS before JS! Best case: 1 CSS + 1 JS file. Real world: 1-2 CSS, 1 int. + 2-3 ext. JS
  • 16. Do CSS Sprites Combine multiple (small) images into one big image to save on HTTP requests. http://spriteme.org/
  • 18. Tip: Balance parallelizable resources Even modern browsers don‘t allow 6+ connections per hostname at the same time! Using img1/img2/imgX.domain.com allows balancing requests to and between multiple sub-domains The result: A massive 6+ connections at a time. http://www.browserscope.org/
  • 19. #2: Decrease size of request(s)
  • 20. Minify CSS & JS files Minifying this (small) style- sheet results in 63% savings! For CSS, try: http://www.phpied.com/cssmin-js/ http://developer.yahoo.com/yui/compressor/ For JS, go with: http://www.crockford.com/javascript/jsmin.html https://developers.google.com/closure/compiler Removing unnecessary whitespaces, line- breaks and comments to reduce file-size. And: Makes it way harder for competitors to steal your code!
  • 21. Enable GZIP compression Verify by checking the response headers, for “Content-Encoding“ to be set to “gzip“ On Apache, try “mod_deflate” which is straight forward: AddOutputFilterByType DEFLATE text/html text/plain text/xml Output compression does massively decrease file-sizes and therefore speeds up rendering. One of the ugliest sites ever: http://www.gzip.org/
  • 22. Why would I do that? Based on jQuery Version 1.9.1 … Normal Minified GZIP‘ed Min. + GZIP‘ed 271 KB 90 KB 78 KB 32 KB ~88% savings in file size due to combining minifying with compression. 22
  • 23. Tip: Use Live HTTP Headers in Firefox To easily check request and response objects as well as their headers, try Live HTTP Headers or Fire Cookie. https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/
  • 24. Use a cookie-less domain Live HTTP headers reveals that no cookies are set for gstatic.com For static files, cookies are not required - disable cookie handling all together. http://www.ravelrumba.com/blog/static-cookieless-domain/
  • 25. Tip: How to get rid of Cookies… Straight forward: Don’t set them…! Apache header manipulation using “mod_headers”: RequestHeader unset Cookie Stop cookies being passed back to the client : Header unset Set-Cookie Same goes for other components (like PHP, Java and the like) – each does provide functionality to disable Cookies. http://httpd.apache.org/docs/2.4/mod/mod_headers.html
  • 27. Setup caching for static resources Expires: Set the “Expires”-header to exactly Fri, 07 Sept 2013 03:18:06 GMT one year ahead of the request date Last-Modified: Set the “Last-Modified”-header to Fri, 07 Sept 2012 03:18:06 GMT the date the file was last modified Cache-Control: Set the “Cache-Control: max-age”- max-age=3153600 header to “3153600” (1 year, again) It’s important to specify one of Expires or Cache-Control max-age, and one of Last-Modified or ETag, for all cacheable resources.
  • 28. Some caching pitfalls… <link rel="stylesheet" type="text/css" href="/styles/83faf15055698ec77/my.css" media="screen" /> Use URL fingerprinting to force refreshing of cached resources. But don’t use parameters to indicate versions – Squid et. al have issues ;) <link rel="stylesheet" type="text/css" href="/styles/my.css?v=83faf15055698ec77" media="screen" /> If you want to cache SSL contents, Header append Cache-Control make sure to have the “Cache "public, must-revalidate" control“-header to contain public.
  • 29. #4: Clean-up that source-code
  • 30. Remove HTML comments ANT can remove HTML comments at build-time using a ReplaceRegEx task There is no need for HTML comments on a live system, remove them during build-time. Or try this one: http://code.google.com/p/htmlcompressor/
  • 31. Move inline CSS / JS to external files Make the HTML as small as possible. Move out inline CSS and JS to make it cache-able.
  • 32. Don’t scale images using width / height The image dimensions are 220x93, but onsite it’ll be shown as 100x42. Small images = less file-size. Don’t scale down images using attributes, provide small ones!
  • 33. Tip: Make images even smaller! Use tinyPNG to optimize PNG files without loosing in quality (up to 70% savings) JPEGmini does the same for JPEG files and will reduce your images massively (up to 80% smaller)! http://tinypng.org/ & http://www.jpegmini.com/
  • 34. Try jQuery Lazy Load <script src="jquery.js" type="text/javascript"></script> <script src="jquery.lazyload.js" type="text/javascript"></script> Embed jQuery + Lazy Load Plug-in <img class="lazy" src="default.jpg" data-original="real-image.jpg" width="640" height="480" alt="sometext" /> $("img.lazy").lazyload(); Provide default + real image, also include dimensions. Execute the loader… http://www.appelsiini.net/projects/lazyload
  • 35. Don’t use empty href- / src-attributes IE makes a request to the directory in which the page is located. Safari & Chrome make a request to the actual page itself. Empty “href” & “src” attributes can make your site slow – they’re requesting themselves.
  • 36. Don’t use @import in CSS <link rel="stylesheet" type="text/css" href="/styles/my.css" /> Always load CSS files using link-rel HTML tags. <style type="text/css"> @import "/styles/my.css"; @import url("/styles/my.css") screen; </style> Especially in external CSS, this will make your mama cry! Using CSS @import in external CSS makes it impossible for browsers to download in parallel.
  • 38. Off-load components into AJAX fragments NO! Not this one…! I know: You guys are SEOs… you want ALL contents being crawl-able. So, use with care… like for filters, etc. AJAX = Asynchronous JavaScript And XML Using AJAX fragments does not block page loading! Credits: http://flic.kr/p/RGtz - AJAX Crawling: http://gdig.de/ajxcrwl
  • 39. Some details about <script> … <script src="script.js" [...] async="async"></script> allows script to be downloaded in background without blocking. Having finished, rendering is blocked and script will be executed. Same - except it guarantees that scripts execute in the order they were specified within HTML mark-up. <script src="script.js" [...] defer="defer"></script> 39
  • 42. How about HeadJS? The beauty: Only a single JS needs to be loaded in <head>! HeadJS does enable parallelizing JS file downloads. Freaking awesome! http://headjs.com/
  • 43. #6: Optimize your MySQL setup
  • 44. Use the Slow Query Log [mysqld] Pro tip: Make sure to use “log- log-slow-queries = my-slow.log queries-not-using-indexes” option to long_query_time = 5 find SELECTs without proper indices! log-queries-not-using-indexes # Run the Perl script: Get slow log parser to know how many sudo ./mysql_slow_log_parser.pl times queries appear, they take to exec. /var/log/my-slow.log > slow.out and which are the worst ones! MySQL seems to be slow - but no idea why? Enable “log-slow-queries” in my.cnf Log parser download: http://gdig.de/slgparse
  • 45. Get your queries right! Pro tip: All “SELECT * FROM X” Adding a proper index statements can be pre-pended with would fix this! “EXPLAIN …” – use it! EXPLAIN SELECT id, firstname, lastname FROM employee WHERE id=1; +----------+------+---------------+------+---------+------+------+------------+ | table | type | possible_keys | key | key_len | ref | rows | Extra | +----------+------+---------------+------+---------+------+------+------------+ | employee | ALL | NULL | NULL | NULL | NULL | 200 | where used | +----------+------+---------------+------+---------+------+------+------------+ A huge amount of MySQL queries suffer from bad coding. Make sure to setup & use indices properly! http://dev.mysql.com/doc/refman/5.1/en/explain.html
  • 46. Don’t do search using MySQL Neither MATCH AGAINST nor LIKE queries are fast! SELECT * FROM table WHERE MATCH (field1, field2) AGAINST ('query'); Searching in MySQL is a performance killer! Consider switching to a real search server. http://lucene.apache.org/solr/ & http://sphinxsearch.com/
  • 47. Consider “simple” table optimizations Do you really need “BIGINT”, maybe “INT” is enough? Sure, this string will ever have that many characters – “VARCHAR(20)” Also required to keep indexes in vs. “VARCHAR(255)”? memory by trimming the overhead! Consider carefully how to setup your database tables. It makes a huge difference!
  • 48. Prioritize statements properly Use “INSERT DELAYED” to execute INSERTs without blocking other stuff! INSERT DELAYED INTO xyz (bla, blubb) VALUES ('val1', 'val2'); You need this data REALLY fast? “SELECT HIGH PRIORITY” helps! SELECT HIGH_PRIORITY foo, bar FROM XYZ; Do you need some data faster than other? Do you care about results of INSERT statements?
  • 49. Make your server faster! If you’re lazy: Use MySQLTuner to get recommendations for optimizing your my.cnf settings There is a pretty good reason, MySQL comes with different pre-configuration files - Use them! https://github.com/rackerhacker/MySQLTuner-perl
  • 50. Consider master- / slave-setups read-only write replicate MySQL replication is awesome – use different servers for reading and writing data. http://de.slideshare.net/osscube/mysql-performance-tuning-top-10-tips
  • 51. #7: Optimize hosting & web-servers
  • 52. Get reliable hosting Reliable hosting is key – make sure to choose a provider that fits your requirements. A starting point: http://gdig.de/ushosts
  • 53. If you’re on Apache… Pro tip: “Small” stuff like disabling .htaccess can really improve performance! Google does provide “mod_pagespeed” to implement their best practices – give it a try! https://developers.google.com/speed/pagespeed/mod
  • 54. Or maybe: Consider replacing Apache… “nginx” is ridiculously fast – especially when serving static assets it’s probably the best you’ll find! http://www.nginx.com/
  • 55. And: Reverse-proxy incoming requests All requests will be passed through a proxy, no direct access squid-cache.org to web-servers will be given. Optimising Web Delivery Get load off your web-server by setting up a dedicated box in front using SQUID Cache. http://www.squid-cache.org/
  • 56. #8: Optimize your PHP setup
  • 57. Use memcached sessions only! memcached comes with a php.ini settings custom PHP session handler - put session data straight to your servers RAM. session.save_handler = memcached session.save_path = "localhost:11211" By default, PHP will store session information on your servers HDDs – no good for high traffic sites! http://php.net/manual/en/intro.memcached.php
  • 58. Get a PHP accelerator What you need to know: PHP code will be complied for each request during runtime. By using an accelerator like APC you can cache functions, objects and much more in memory. Better: It does also cache compiled byte-code! http://devzone.zend.com/1812/using-apc-with-php/
  • 59. Try out PHP-FPM Read the full article: http://interfacelab.com/nginx-php-fpm-apc-awesome/ FastCGI Process Manager for PHP …is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites. http://php-fpm.org/
  • 60. #9: Always be the first one to know!
  • 61. Heavy load testing: blitz.io http://blitz.io/
  • 62. Site-uptime & performance: pingdom http://www.pingdom.com/
  • 63. Application & service monitoring: icinga https://www.icinga.org/
  • 64. Automated testing: GTmetrix http://gtmetrix.com/api/
  • 65. #10: Bit of a Cheat…
  • 66. You could just buy me a beer!
  • 67. Use Google’s CDN for popular libraries Since a lot of site-owners are using G-DCs, chances are, people have those files cached already! Google has the fastest CDN on the planet, make sure you use their DCs to serve your files if possible! https://developers.google.com/speed/libraries/
  • 68. Off-load other stuff to a CDN Latency is crucial – especially if you’re serving a global audience, offloading statics to a CDN will give additional performance. CDN Overview: http://gdig.de/cdns
  • 69. Thanks! Questions? mail@grimm-digital.com twitter.com/basgr linkedin.com/in/bastiangrimm facebook.com/grimm.digital http://gdig.de/sydney2 Bastian Grimm, Managing Partner - Grimm Digital - @basgr