Wydajność aplikacji webowych (1)

Podobne dokumenty
Kompresja stron internetowych

Projektowanie i implementacja wysokowydajnych aplikacji w języku

FEO w Joomla!, czyli jak przyspieszyć swoją stronę

W3 Total Cache. Skuteczne przyśpieszanie WordPressa. Bartosz Romanowski

Program szkolenia: REST i Microservices w PHP

Przedmowa...9. Wprowadzenie...11

Automatyzacja Testowania w WEB 2.0

Tips (mainly) by Google and Kamil Majdanik

Ksi¹ ka Wydajne witryny internetowe. Przyspieszanie dzia³ania serwisów WWW to

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS)

Program szkolenia: JavaScript Craftsmanship

Języki i narzędzia programowania III. Łukasz Kamiński Wykład II

WebAii Automation Framework

Healthix Consent Web-Service Specification

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Wybrane działy Informatyki Stosowanej

Programowanie i projektowanie obiektowe

Szczegółowy opis zamówienia:

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne:

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

PERFORMANCE W JOOMLA! JAK SPRAWIĆ ABY STRONA DZIAŁAŁA SZYBCIEJ?

Programowanie w Internecie

SZKOŁA RST ŁUKASZ WRÓBEL

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

Języki programowania wysokiego poziomu WWW

Aplikacje webowe z wykorzystaniem Node.js oraz Express

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Sprawozdanie Sieci komputerowe i bazy danych Laboratorium nr 4

Blokowanie stron internetowych

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Zastosowanie darmowych rozwiązań do testów użyteczności aplikacji internetowych

HTTP W 5-CIU PYTANIACH MICHAŁ KOPACZ

LESS - CSS dla leniwych

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Zespół Szkół w Klonowej. learningapps.org

Jak okiełznać frontend w Django? Piotr Maliński

Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Blokowanie stron internetowych

OpenLaszlo. OpenLaszlo

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Encje w Drupalu. Tworzenie własnych encji i ich wpływ na poprawę wydajności

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Web Performance Optimisation - szybsze strony internetowe

Sprawozdanie Sieci komputerowe i bazy danych Laboratorium nr 4 Wojciech Kaczmarski

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI


SEO Audit for domain blog.rabinek.pl

Camspot 4.4 Camspot 4.5

Aplikacje webowe. mgr inż. Aleksander Smywiński-Pohl. Elektroniczne Przetwarzanie Informacji

Narzędzia OWASP dla developerów OWASP ESAPI & AppSensor OWASP The OWASP Foundation

Programowanie w Internecie

Tworzenie własnych Smart Mobile Apps dzięki MobileHMI. ICONICS Worldwide Customer Summit

Programowanie internetowe

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

PRZETWARZANIE ROZPROSZONE ZADAN` Mariusz Gil 4Developers 2012, Poznań

REACT NATIVE. Anna Maziejuk Kamil Jankowski

Website review radcowie.biz

CMS, CRM, sklepy internetowe, aplikacje Web

Programowanie Komponentowe WebAPI

SEO Audyt. Podsumowanie. 51/100 punktów. Masz 11 rzeczy, które możesz poprawić! Uzyskany wynik: Data przeprowadzenia: :33:47

Kompresja pamięci w jądrze Linuksa

Website review auto-web.pl

Google Web Toolkit Michał Węgorek ZPO 2009

On-Board Unit (OBU) Rejestracja. Spis treści Logowanie... 1

OpenSocial w nk.pl. Janusz Dziemidowicz. PLNOG października nk.pl

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

PRZEWODNIK PO PRZEDMIOCIE

Języki programowania wysokiego poziomu. Ćwiczenia

Narzędzie informatyczne do modelowania, zarządzania i dokumentowania procesów systemu zarządzania jakością

WYZWANIE modernizacji wyglądu witryny internetowej dostosować działanie strony do standardu Progresywnej Aplikacji opracowanego przez firmę Google

WYMAGANIA EDUKACYJNE. Witryny i Aplikacje Internetowe klasa I

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Zasady rejestracji i instrukcja zarządzania kontem użytkownika portalu

Drobne błędy w portalach WWW

SEO Audit for domain zdrowewidzenie.pl

Szczegóły związane z wymaganiami odnośnie SLA znajdują się w dokumentacji funkcjonalnej znajdującej się w załączniku nr 10 do SIWZ.

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5.

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Technologie internetowe

H2.cjk { font-family: "Microsoft YaHei"; font-size: 14pt; font-style: italic; font-weight:

17-18 listopada, Warszawa

Wyk lad 8: Leniwe metody klasyfikacji

Web Tools Platform. Adam Kruszewski

Dwie perspektywy responsive web design: user experience i front-end developer

MS Visual Studio 2005 Team Suite - Performance Tool

PODSTAWY PROJEKTOWANIA

Architektura systemów webowych wysokiej przepustowości. na przykładzie Wikia

Programowanie zorientowane obiektowo. Mateusz Kołecki

Flex 3. Piotr Strzelczyk Wydział EAIiE Katedra Automatyki. Kraków, 2008

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Transkrypt:

Wstęp Wydajność aplikacji webowych (1) Systemy Rozproszone Paweł Bedyński Matematyka Informatyka i Mechanika Uniwersytet Warszawski 19/11/2009

Wstep O czym bedzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzedzia Zawez anie tematu Aplikacje webowe Strony internetowe Wydajne aplikacje szybkos c meta tres c tres c Paweł Bedyn ski Wydajnos c aplikacji webowych (1)

Wstep O czym bedzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzedzia Zawez anie tematu Aplikacje webowe Strony internetowe Wydajne aplikacje szybkos c meta tres c tres c Paweł Bedyn ski Wydajnos c aplikacji webowych (1)

Wstep O czym bedzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzedzia Zawez anie tematu Aplikacje webowe Strony internetowe Wydajne aplikacje szybkos c meta tres c tres c Paweł Bedyn ski Wydajnos c aplikacji webowych (1)

Wstep O czym bedzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzedzia Zawez anie tematu Aplikacje webowe Strony internetowe Wydajne aplikacje szybkos c meta tres c tres c Paweł Bedyn ski Wydajnos c aplikacji webowych (1)

Wstęp O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Frontend vs. Backend - sens życia według sponsora odcinka igoogle - pusty cache Sponsor Odcinka Steve Souders http://stevesouders.com/

Wstęp O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Frontend vs. Backend - sens życia według sponsora odcinka igoogle - pusty cache Sponsor Odcinka Steve Souders http://stevesouders.com/ igoogle - primed cache relacja to 17% na backend i 83% na frontend.

Wstęp Frontend vs Backend - w rzeczywistości O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia

Frontend vs Backend Wstęp O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Empty cache i primed cache Testy S.Soudersa na Yahoo sztuczne zdjecie z Expires w przeszłości i Last-Modified stałym i... też w przeszłości dwa możliwe kody 200 pusty cache 304 mam to zdjecie w tej wersji - ok ta wersja jest dobra. (logi z serwera) po wyrównaniu ok 20% zapytań pochodzilo od przegladarek z pustym cachem

Frontend vs Backend Wstęp O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Jednak frontend 80-90% czasu który użytkownik czeka na start strony to frontend. Zacznijmy od niego. większy potencjał usprawnień prostota dbanie o backend jest droższe, to sa duże projekty a i tak z perspektywy odbiorcy jest to prawie bez znaczenia potwierdzone działanie

Wstęp Dlaczego dbanie o wydajność jest istotne O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Google +500ms skutkuje -20% ruchu Sponsor Odcinka Steve Souders http://stevesouders.com/

Wstęp Dlaczego dbanie o wydajność jest istotne O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Google +500ms skutkuje -20% ruchu Sponsor Odcinka Yahoo +400ms skutkuje -5%-9% ruchu Steve Souders http://stevesouders.com/

Wstęp Dlaczego dbanie o wydajność jest istotne O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Google +500ms skutkuje -20% ruchu Sponsor Odcinka Yahoo +400ms skutkuje -5%-9% ruchu Amazon +100ms skutkuje -1% sprzedaży to około 30.000.000$ rocznie (zysku a nie obrotu) Steve Souders http://stevesouders.com/

Wstęp Dlaczego dbanie o wydajność jest istotne O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Google +500ms skutkuje -20% ruchu Sponsor Odcinka Yahoo +400ms skutkuje -5%-9% ruchu Amazon +100ms skutkuje -1% sprzedaży to około 30.000.000$ rocznie (zysku a nie obrotu) troche angielszczyzny carrying coal to Newcastle Steve Souders http://stevesouders.com/

Standardowe dwie drogi Wstęp O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Droga pierwsza APTIMIZE i podobne

Standardowe dwie drogi Wstęp O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Droga pierwsza APTIMIZE i podobne Droga druga zrób to samemu

Wstęp Narzędzia rozwijane przez Google O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Web Page Analysis Page Speed - Open source Firefox/Firebug Add-on that evaluates the performance of web pages and gives suggestions for improvement. Chrome Developer Tools - Tools included in Google Chrome that let you edit, debug, and monitor CSS, HTML, and JavaScript live in any web page. You can also use them to optimize web page performance by profiling CPU and memory usage. Resource Optimization Closure Compiler - Optimize the speed and size of your JavaScript. Development tools Closure Tools - Use the Closure Compiler, Closure Library, and Closure Templates to build rich web applications with JavaScript that is faster, more powerful, and more optimized..

Wstęp Narzędzia rozwijane przez innych producentów O czym będzie ta prezentacja, a o czym nie Uzasadnienie biznesowe i sponsor Narzędzia Development Cuzillion Hammerhead OOCSS Web debugging Fiddler 2 Firebug HttpWatch Web page analysis AOL Page Test IBM Page Detailer Microsoft VRTA MySpace Performance Tracker Yahoo! YSlow PHP profiling Xdebug XHProf by Facebook Performance benchmarking httperf mon.itor.us Pylot Resource optimization CSS Sprite Generator JSLint JSMinr Smush It SpriteMe! YUI Compressor

funkcja Wstęp brak To typowa sytuacja

funkcja Wstęp brak To typowa sytuacja Przegladarka jest bezczynna przez długi okres

funkcja Wstęp brak To typowa sytuacja Przegladarka jest bezczynna przez długi okres...może można by to zmienić

funkcja Wstęp brak stosujac Funkcja (PHP)

funkcja Wstęp brak stosujac Funkcja (PHP) powoduje wysłanie już przetworzonych danych do przegladarki

problemy z Wstęp domain blocking- IE7

problemy z Wstęp domain blocking- IE7 ob_ w PHP output buffering Transfer-Encoding: chunked - powinien być właczony Gzip 8K jako default (Apache DeflateBufferSize wersje przed 2.2.8) Poxy i antivirusy moga blokować flushing Przegladarki maja minimalne limity na aktywowanie

problemy z Wstęp domain blocking- IE7 ob_ w PHP output buffering Transfer-Encoding: chunked - powinien być właczony Gzip 8K jako default (Apache DeflateBufferSize wersje przed 2.2.8) Poxy i antivirusy moga blokować flushing Przegladarki maja minimalne limity na aktywowanie czy pakowanie danych zawsze jest dobre? Safari(2K), Chrome(2K), IE(255B)

Wstęp jeśli nie wiesz jak to zrobić......zrób to jak Google

Wstęp jeśli nie wiesz jak to zrobić......zrób to jak Google firmujemy wyniki w ciemno zasoby ściagane sa wcześnie przegladarka szybciej renderuje grafike faster user experience http://www.google.com/images/nav_logo4.png

co to jest selektor Wstęp ID selektor kod CSS wyjaśnienie wybiera element, którego atrybut ID ma wartość toc

co to jest selektor Wstęp ID selektor selektor klasy kod CSS wyjaśnienie wybiera elementy z class=chapter

co to jest selektor Wstęp ID selektor selektor klasy selektor typu kod CSS wyjaśnienie wybiera wszystkie elementy A w drzewie dokumentu

co to jest selektor Wstęp ID selektor selektor klasy selektor typu selektor następnika kod CSS wyjaśnienie wybiera element z ID=toc występujacy bezpośrenio po H1

co to jest selektor Wstęp ID selektor selektor klasy selektor typu selektor następnika sektor dziecka kod CSS wyjaśnienie wybiera wszystkie elemtny LI, których rodzice maja ID=toc

co to jest selektor Wstęp ID selektor selektor klasy selektor typu selektor następnika sektor dziecka selektor potomka kod CSS wyjaśnienie wybiera wszystkie elementy A, których przodek ma ID=toc

co to jest selektor Wstęp ID selektor selektor klasy selektor typu selektor następnika sektor dziecka selektor potomka selektor uniwersalny kod CSS wyjaśnienie wybiera wszystkie elementy

co to jest selektor Wstęp ID selektor selektor klasy selektor typu selektor następnika sektor dziecka selektor potomka selektor uniwersalny selektor po atrybutach kod CSS wyjaśnienie wybiera elementy, których atrybuty pasuja do zadanego wzorca

co to jest selektor Wstęp ID selektor selektor klasy selektor typu selektor następnika sektor dziecka selektor potomka selektor uniwersalny selektor po atrybutach psudo klasy i elementy kod CSS wyjaśnienie wybiera elementy w zależności od innej akcji (np. pozycji myszki)

Wstęp pisanie wydajnych CSSów - przyczyna gdzie jest haczyk?

Wstęp pisanie wydajnych CSSów - przyczyna gdzie jest haczyk? The style system matches a rule by starting with the rightmost selector and moving to the left through the rule s selectors. As long as your little subtree continues to check out, the style system will continue moving to the left until it either matches the rule or bails out because of a mismatch. https://developer.mozilla.org/en/writing_efficient_css

Wstęp pisanie wydajnych CSSów - przyczyna gdzie jest haczyk? The style system matches a rule by starting with the rightmost selector and moving to the left through the rule s selectors. As long as your little subtree continues to check out, the style system will continue moving to the left until it either matches the rule or bails out because of a mismatch. https://developer.mozilla.org/en/writing_efficient_css przykład 1 szuka wszystkich elementów LI w treści dokumentu i sprawdza czy ich rodzic ma ID= toc

Wstęp pisanie wydajnych CSSów - przyczyna gdzie jest haczyk? The style system matches a rule by starting with the rightmost selector and moving to the left through the rule s selectors. As long as your little subtree continues to check out, the style system will continue moving to the left until it either matches the rule or bails out because of a mismatch. https://developer.mozilla.org/en/writing_efficient_css przykład 1 przykład 2 szuka wszystkich elementów LI w treści dokumentu i sprawdza czy ich rodzic ma ID= toc szuka wszystkich elementów A w treści dokumentu i sprawdza czy którykolwiek przodek ma ID= toc

Wstęp pisanie wydajnych CSSów - wnioski unikaj uniwersalnych selektorów

Wstęp pisanie wydajnych CSSów - wnioski unikaj uniwersalnych selektorów unikaj kombinacji z selektorami ID źle DIV #navbar {} dobrze #navbar {}

Wstęp pisanie wydajnych CSSów - wnioski unikaj uniwersalnych selektorów unikaj kombinacji z selektorami ID źle DIV #navbar {} dobrze #navbar {} unikaj nieokreśloności źle UL LI A {} lepiej UL > LI > A {}

Wstęp pisanie wydajnych CSSów - wnioski unikaj uniwersalnych selektorów unikaj kombinacji z selektorami ID źle DIV #navbar {} dobrze #navbar {} unikaj nieokreśloności źle UL LI A {} lepiej UL > LI > A {} unikaj relacji dziecko/potomek lepiej UL > LI > A {} najlepiej.li-anchor {}

Wstęp po co to komu... testowanie ekstremalne Jon Sykes http://jon.sykes.me/153/more-css-performance-testing-pt-3

Wstęp po co to komu... testowanie ekstremalne Jon Sykes http://jon.sykes.me/153/more-css-performance-testing-pt-3 20.000 elementow A 1 brak arkusza stylów 2 tylko tag: A {} 3 class:.a00001 {}.a00002 {} 4 potomek: DIV DIV DIV P A.00001 {} 5 dziecko: DIV > DIV > DIV > P > A.a00001 {}

Wstęp po co to komu... testowanie ekstremalne Jon Sykes http://jon.sykes.me/153/more-css-performance-testing-pt-3 20.000 elementow A 1 brak arkusza stylów 2 tylko tag: A {} 3 class:.a00001 {}.a00002 {} 4 potomek: DIV DIV DIV P A.00001 {} 5 dziecko: DIV > DIV > DIV > P > A.a00001 {} mało wiarygodne testy

Wstęp po co to komu... testowanie ekstremalne (2) Ciekawy przypadek IE7

rzeczywiste przypadki Wstęp

Rzeczywiste przypadki (1) Wstęp Test 1.000 reguł VS 20.000 reguł pytanie czy zatem kosztowne selektory na typowym (realistycznym) poziomie nie sa tak kosztowne, jak by się to mogło wywadać Średnia 30ms

Rzeczywiste przypadki (1) Wstęp Test 1.000 reguł VS 20.000 reguł pytanie czy zatem kosztowne selektory na typowym (realistycznym) poziomie nie sa tak kosztowne, jak by się to mogło wywadać odpowiedź może selektor DIV DIV DIV P A.class0007 {} wcale nie jest taki kosztowny Średnia 30ms

Rzeczywiste przypadki (2) Wstęp Test 1.000 reguł VS 20.000 reguł poprzednio badaliśmy selektor DIV DIV DIV P A.class0007 {} teraz badamy selektor A.class0007 * {} Średnia 2126ms

Rzeczywiste przypadki (2) Wstęp Test 1.000 reguł VS 20.000 reguł poprzednio badaliśmy selektor DIV DIV DIV P A.class0007 {} teraz badamy selektor A.class0007 * {} Średnia 2126ms wnioski kluczowy jest selektor pierwszy z prawej. optymalizowanie CSSów pod względem wydajności oprócz oczywistych przypadków, ma sens tylko przy dość dużych projektach (dużych plikach CSS)

właczamy GZIPa Wstęp Zasada Google Page Speed Compressing resources with gzip can reduce the number of bytes sent over the network. HTTP >=1.1 request: Accept-Encoding : gzip, deflate response: Content-Encoding : gzip Apache 2.x AddOutputFilterByType DEFLATE text/html text/css application/x-javascript w pliku konfiguracyjnym

Wstęp korzyści z właczenia GZIPa co z tego mamy do 70% redukcji w transferze

Wstęp korzyści z właczenia GZIPa co z tego mamy do 70% redukcji w transferze i to nie tylko HTML ale również JavaStript, CSS, XML, JSON

Wstęp korzyści z właczenia GZIPa co z tego mamy do 70% redukcji w transferze i to nie tylko HTML ale również JavaStript, CSS, XML, JSON

Wstęp No to właczyliśmy GZIPa. Problem z głowy? Ale...

Wstęp No to właczyliśmy GZIPa. Problem z głowy? Ale... 15% użytkowników odbiera nieskompresowane dane. Dlaczego?

Wstęp No to właczyliśmy GZIPa. Problem z głowy? Ale... 15% użytkowników odbiera nieskompresowane dane. Dlaczego? stare przegladarki Netscape Navigator 3 0.0% Netscape Communicator 4 0.1% Opera 3.5 0.0% IE <3 0.01%

Wstęp No to właczyliśmy GZIPa. Problem z głowy? Ale... 15% użytkowników odbiera nieskompresowane dane. Dlaczego? stare przegladarki Netscape Navigator 3 0.0% Netscape Communicator 4 0.1% Opera 3.5 0.0% IE <3 0.01% Podpowiedź większość requestów pochodzi z Bliskiego Wschodu i Watykanu

biedne 15% - przyczyny Wstęp przyczyna 1 (ok. 14%) Brakuje wpisu Accept-Encoding w nagłówku requesta przyczyna 2 (ok. 1%) Czasem nagłowek jest celowo zniekształcony Accept-EncodXng: gzip, deflate X-cept-Encoding: gzip, deflate XXXXXXXXXXXXXXX: XXXXXXXXXXXXX przyczyna 3 proxy i antywirusy celowo wyłaczaj a GZIPa aby łatwiej filtrować odpowiedzi

Co można zrobić. Wstęp nie zakładać że kompresja zadziała zmniejszyć transferowane dane poprzez: minimalizacje HTML, JavaScript, CSS używanie CSS, zamiast wpisywania stylów ręcznie (bo to generuje wiecej znaczków) używanie aliasów na długie nazwy (JavaScripts)

Thank you! Wstęp Thank you Urlografia

URLografia Wstęp Thank you Urlografia Główne źródło 1 Wykłady Steve a Soudersa na YouTube 2 Wykorzystano zdjęcia i inne materiały z prezentacji Steve a Soudersa Źródła 1 Kanał na YouTube http://www.youtube.com/view_play_list?p=689d6ee903ed5cb6 2 Steve Souders home page http://stevesouders.com/ 3 Steve Souders 14 rules http://stevesouders.com/hpws/rules.php 4 Google page speed - Best Practices http://code.google.com/intl/pl/ speed/page-speed/docs/rules_intro.html 5 ComparePages http://stevesouders.com/compare.php 6 Aptimize http://www.aptimize.com/ 7 SpriteMe http://spriteme.org/ 8 Browserscope http://www.browserscope.org/