SlideShare a Scribd company logo
1 of 60
Download to read offline
Our application got popular,
and now it breaks
Dan Wilson
Who is Dan
Wilson

Runs ChallengeWave.com,
Datacurl LLC and NCDevCon

Specializes in project
rescue, high performance
applications and development
team evaluation

Owner of Model-Glue

Dad of 2, Husband to 1

Loves all things technical
and a good debate
Time is Money
Let's talk about a new restaurant
Designed a brand new kitchen
Opening Day
People Waiting......
Meltdown!!!
What does this have to do with
programming?
How most projects start
Single User, No Data
Bottlenecks
● Network Capacity
● Network Throughput
● Network Latency
● Appliances
● Database
●
3rd
Party APIs
● Client Side
Limitations
● And many more!
● Memory
● CPU
● Threads
● Disk Space
● Disk Transfer
● JVM Space
● ColdFusion template
cache
● ColdFusion Threads
Evil #1: Making bad tradeoffs
Architecture with Session
● Session Scope use is the largest culprit
● Sometimes you have to deoptimize a few
operations in order to provide a scalable
solution (like stop caching a state query in application)
● If you want to use a shared scope and want to
keep an eye on scalability later, use a lookup
factory.
Over-reliance on Shared Scopes
<cfcomponent>
<cfset variables.instance = structNew() />
<cffunction name="init" returntype="CurrentUserLoader" output="false"
access="public">
<cfargument name="Transfer" type="any" required="true"/>
<cfset variables.transfer = arguments.transfer />
<cfreturn this />
</cffunction>
<cffunction name="destroy" output="false" access="public" returntype="void" >
<cfset cookie.userID = "" />
<cfset structDelete( cookie, "userID") />
</cffunction>
<cffunction name="load" output="false" access="public" returntype="any" hint="">
<cfset var loggedInUserID = 0 />
<cfif structkeyExists(cookie, "userID")>
<cfset loggedInUserID = cookie.userID />
</cfif>
<cfreturn variables.transfer.get("User", val( loggedInUserID ) ) />
</cffunction>
<cffunction name="set" output="false" access="public" returntype="void" hint="">
<cfargument name="user" type="any" required="true"/>
<cfset cookie.UserID = arguments.User.getUserID() />
<cfset cookie.Email = arguments.User.getEmail() />
</cffunction>
</cfcomponent>
Architecture with Distributed Cache
Architecture with Content Cache
Micro-increment Caching
Evil #2: Database Abuse
<cfloop query="OldLastLogins">
<cfquery name="UpdateUsers" datasource="#datasource#">
UPDATE Users
SET Active = 0
WHERE UserID = #OldLastLogins.UserID#
</cfquery>
</cfloop>
We all agree this is bad, right?
<cfquery name="OldLastLogins" datasource="#db#">
SELECT MAX(CreateDate) AS LastLoggedIn, UserID
FROM UserLoginHistory
HAVING LastLoggedIn < '2015-01-01'
</cfquery>
<cfquery name="UpdateUsers" datasource="#db#">
UPDATE Users
SET Active = 0
WHERE UserID IN #ValueList(OldLastLogins, UserID)#
</cfquery>
Someone is afraid of joins
<cfquery name="UpdateUsers" datasource="#db#">
UPDATE U
SET Active = 0
FROM Users U
INNER JOIN (
SELECT MAX(CreateDate) AS LastLoggedIn, UserID
FROM UserLoginHistory
HAVING LastLoggedIn < '2015-01-01'
) OldUsers ON U.UserID = OldUsers.UserId
</cfquery>
Joins for Fun and Profit - MSSQL
<cfquery name="UpdateUsers" datasource="#db#">
UPDATE Users
INNER JOIN (
SELECT MAX(CreateDate) AS LastLoggedIn, UserID
FROM UserLoginHistory
HAVING LastLoggedIn < '2015-01-01'
) OldUsers ON Users.UserID = OldUsers.UserId
SET Active = 0
</cfquery>
Joins for Fun and Profit - MYSQL
<cfscript>
EntityToQuery(
EntityLoad("Users",
{ Gender = arguments.genderID}
)
);
</cfscript>
Someone is afraid of queries
<cfoutput query="GetParks"
startrow="#StartRow#"
maxrows="#MaxRows#">
#ParkName#
</cfoutput>
Someone is afraid of proper SQL
<cfquery name="BadQuery" datasource="#datasource#">
SELECT employee_number, name
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees salary
WHERE salary.department = employees.department
)
</cfquery>
<cfquery name="AnotherBadQuery" datasource="#datasource#">
SELECT employee_number, name, (
SELECT AVG(salary)
FROM employees salary
WHERE salary.department = employees.department
)
FROM employees
</cfquery>
This is like a query in a loop
<cfquery name="PeopleToFire" datasource="#db#">
SELECT emp.employee_number, emp.name
FROM emp
INNER JOIN
(
SELECT department,
AVG(salary) AS dept_avg
FROM employees
GROUP BY department
) AS deptAvg
ON emp.department = deptAvg.department
WHERE emp.salary > deptAvg.dept_avg
</cfquery>
This is not like a query in a loop
How much data are you returning?
<cfquery name="JuneVacations" datasource="#db#">
SELECT Department, EmployeeName, VacationDate
FROM Department d
INNER JOIN Employee e
ON d.departmentID = e.departmentID
AND e.isContractor = 0
LEFT JOIN Vacations v
ON e.employeeID = v.employeeID
AND v.vacationDate BETWEEN '2015-06-
01' AND '2015-06-30'
</cfquery>
Remember Join Criteria Zones
Indexes
Index speeds up read operations at the expense
of write operations.
Most web applications are read heavy. Is yours?
The See Saw Tradeoff of Indexes
CREATE INDEX IDX_CUSTOMER_LOCATION
on CUSTOMER (City, Country)
Finds by City or City+Country
NOT by Country or Country+City
How Compound Indexes Work
All database performance
problems can be solved by
creating indexes, save the
problem of too many indexes
- Dan Wilson
Wilson's Rule of Database Indexes
Evil #3: Client Abuse
Time to First Byte
Time to Glass
Time to Functional
Time to Last Byte
Useful Front Side Events
If it's in an Excel Chart, it must be true
Blocking
No Repainting
Optimize Front Side
<html>
<head>
</head>
<body>
<h2>I am very slow</h2>
</body>
<link rel="stylesheet" type="text/css"
href="www/css/style.css"/>
<script src="over/the/rainbow.js">
</script>
</html>
CSS and Javascript: Bad
<html>
<head>
<link rel="stylesheet" type="text/css"
href="www/css/style.css"/>
<script src="over/the/rainbow.js">
</script>
</head>
<body>
<h2>I am not fast</h2>
</body>
</html>
CSS and Javascript: Better
<html>
<head>
<link rel="stylesheet" type="text/css"
href="www/css/style.css"/>
</head>
<body>
<h2>I am fast</h2>
<script src="over/the/rainbow.js">
</script>
</body>
</html>
CSS and Javascript: Even Better
jQuery-v2.1.3
● 242KB - Uncompressed
● 32KB – Min/Gzipped
● Source file is 9205 lines of code
Javascript Compressors:
● Whitespace Removal
● Tokenization/Substitution
CSS Compressors
● Whitespace Removal
Compress for the best experience
Where is he going with this slide?
Dan Wilson
nodans.com
twitter.com/DanWilson
www.linkedin.com/in/profile
ofdanwilson
Thanks!
AppendixAppendix
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
Put these lines in .htaccess or in your httpd.conf file
Enable Gzip for Apache
Follow directions here:
https://technet.microsoft.com/en-us/library/cc771003(WS.10).aspx
Enable Gzip for IIS
● Yslow: http://yslow.org/
● Google Page Speed:
https://developers.google.com/speed/pagespeed/
● http://gtmetrix.com/
Front end speed metric tools
● http://en.wikipedia.org/wiki/Correlated_subquery
SQL Performance Topics
www.akamai.com
aws.amazon.com/cloudfront
Content Delivery Network Options
ColdFusion Server Monitor
CFStat
New Relic – SaaS
Fusion Reactor Monitor
Nagios
Monitoring Options
Reverse Proxy
Cache
http://varnish-cache.org
http://www.squid-cache.org
http://trafficserver.apache.org
Reverse Proxy Cache (Front Cache)
In-Memory Cache
http://www.ehcache.org
http://terracotta.org/coldfusion
http://memcached.org
Tutorials on Caching
Varnish: http://bit.ly/c1puD6
Squid Video: http://bit.ly/9iZu1Z
Aaron West: http://bit.ly/a4sYcr
Rob Brooks-Bilson: http://bit.ly/txser
Terracotta Webinar: http://www.terracotta.org/webcasts
This presentation: http://tinyurl.com/cacheme
Helpful Caching Links

More Related Content

What's hot

Web Client Performance
Web Client PerformanceWeb Client Performance
Web Client PerformanceHerea Adrian
 
Headaches of Blocking, Locking, and Deadlocking
Headaches of Blocking, Locking, and DeadlockingHeadaches of Blocking, Locking, and Deadlocking
Headaches of Blocking, Locking, and DeadlockingBrent Ozar
 
How to Fix a Slow WordPress Site (and get A+ scores)
How to Fix a Slow WordPress Site (and get A+ scores)How to Fix a Slow WordPress Site (and get A+ scores)
How to Fix a Slow WordPress Site (and get A+ scores)Lewis Ogden
 
Top 10 Developer Mistakes That Won't Scale with SQL Server
Top 10 Developer Mistakes That Won't Scale with SQL ServerTop 10 Developer Mistakes That Won't Scale with SQL Server
Top 10 Developer Mistakes That Won't Scale with SQL ServerBrent Ozar
 
Html5 Fit: Get Rid of Love Handles
Html5 Fit:  Get Rid of Love HandlesHtml5 Fit:  Get Rid of Love Handles
Html5 Fit: Get Rid of Love HandlesChris Love
 
Client-side Web Performance Optimization [paper]
Client-side Web Performance Optimization [paper]Client-side Web Performance Optimization [paper]
Client-side Web Performance Optimization [paper]Jakob
 
Performance Of Web Applications On Client Machines
Performance Of Web Applications On Client MachinesPerformance Of Web Applications On Client Machines
Performance Of Web Applications On Client MachinesCurelet Marius
 
Generating the Server Response: HTTP Status Codes
Generating the Server Response: HTTP Status CodesGenerating the Server Response: HTTP Status Codes
Generating the Server Response: HTTP Status CodesDeeptiJava
 
WebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan WintermeyerWebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan WintermeyerElixir Club
 
How to make Ajax work for you
How to make Ajax work for youHow to make Ajax work for you
How to make Ajax work for youSimon Willison
 
Frontend performance
Frontend performanceFrontend performance
Frontend performancesacred 8
 
QuickConnect
QuickConnectQuickConnect
QuickConnectAnnu G
 
Implementing a Responsive Image Strategy
Implementing a Responsive Image StrategyImplementing a Responsive Image Strategy
Implementing a Responsive Image StrategyChris Love
 
Preparing your web services for Android and your Android app for web services...
Preparing your web services for Android and your Android app for web services...Preparing your web services for Android and your Android app for web services...
Preparing your web services for Android and your Android app for web services...Droidcon Eastern Europe
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站areyouok
 
The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Startedguest1af57e
 
Log analysis and pro use cases for search marketers online version (1)
Log analysis and pro use cases for search marketers online version (1)Log analysis and pro use cases for search marketers online version (1)
Log analysis and pro use cases for search marketers online version (1)David Sottimano
 
Internet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian ThilmanyInternet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian ThilmanyChristian Thilmany
 

What's hot (20)

Web Client Performance
Web Client PerformanceWeb Client Performance
Web Client Performance
 
Headaches of Blocking, Locking, and Deadlocking
Headaches of Blocking, Locking, and DeadlockingHeadaches of Blocking, Locking, and Deadlocking
Headaches of Blocking, Locking, and Deadlocking
 
How to Fix a Slow WordPress Site (and get A+ scores)
How to Fix a Slow WordPress Site (and get A+ scores)How to Fix a Slow WordPress Site (and get A+ scores)
How to Fix a Slow WordPress Site (and get A+ scores)
 
Web performance
Web performanceWeb performance
Web performance
 
Top 10 Developer Mistakes That Won't Scale with SQL Server
Top 10 Developer Mistakes That Won't Scale with SQL ServerTop 10 Developer Mistakes That Won't Scale with SQL Server
Top 10 Developer Mistakes That Won't Scale with SQL Server
 
Html5 Fit: Get Rid of Love Handles
Html5 Fit:  Get Rid of Love HandlesHtml5 Fit:  Get Rid of Love Handles
Html5 Fit: Get Rid of Love Handles
 
Client-side Web Performance Optimization [paper]
Client-side Web Performance Optimization [paper]Client-side Web Performance Optimization [paper]
Client-side Web Performance Optimization [paper]
 
Performance Of Web Applications On Client Machines
Performance Of Web Applications On Client MachinesPerformance Of Web Applications On Client Machines
Performance Of Web Applications On Client Machines
 
Generating the Server Response: HTTP Status Codes
Generating the Server Response: HTTP Status CodesGenerating the Server Response: HTTP Status Codes
Generating the Server Response: HTTP Status Codes
 
WebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan WintermeyerWebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan Wintermeyer
 
How to make Ajax work for you
How to make Ajax work for youHow to make Ajax work for you
How to make Ajax work for you
 
Frontend performance
Frontend performanceFrontend performance
Frontend performance
 
QuickConnect
QuickConnectQuickConnect
QuickConnect
 
Implementing a Responsive Image Strategy
Implementing a Responsive Image StrategyImplementing a Responsive Image Strategy
Implementing a Responsive Image Strategy
 
Preparing your web services for Android and your Android app for web services...
Preparing your web services for Android and your Android app for web services...Preparing your web services for Android and your Android app for web services...
Preparing your web services for Android and your Android app for web services...
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
 
The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Started
 
Log analysis and pro use cases for search marketers online version (1)
Log analysis and pro use cases for search marketers online version (1)Log analysis and pro use cases for search marketers online version (1)
Log analysis and pro use cases for search marketers online version (1)
 
Magento Optimization Whitepaper
Magento Optimization WhitepaperMagento Optimization Whitepaper
Magento Optimization Whitepaper
 
Internet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian ThilmanyInternet Explorer 8 for Developers by Christian Thilmany
Internet Explorer 8 for Developers by Christian Thilmany
 

Viewers also liked

Refactor Large apps with Backbone
Refactor Large apps with BackboneRefactor Large apps with Backbone
Refactor Large apps with BackbonedevObjective
 
Getting Your Hooks Into Cordova
Getting Your Hooks Into CordovaGetting Your Hooks Into Cordova
Getting Your Hooks Into CordovadevObjective
 
Ruta de El Hereje. Miguel Delibes.Valladolid.
Ruta de El Hereje. Miguel Delibes.Valladolid.Ruta de El Hereje. Miguel Delibes.Valladolid.
Ruta de El Hereje. Miguel Delibes.Valladolid.Henardelarosa
 
Marketing for developers tim cunningham
Marketing for developers tim cunninghamMarketing for developers tim cunningham
Marketing for developers tim cunninghamdevObjective
 
Working Remotely and Doing It Right
Working Remotely and Doing It RightWorking Remotely and Doing It Right
Working Remotely and Doing It RightdevObjective
 
Los medios y materiales de enseñanza
Los medios y materiales de enseñanzaLos medios y materiales de enseñanza
Los medios y materiales de enseñanzaPaty May
 
Computador pcm07
Computador pcm07Computador pcm07
Computador pcm07cerradounb
 

Viewers also liked (9)

Refactor Large apps with Backbone
Refactor Large apps with BackboneRefactor Large apps with Backbone
Refactor Large apps with Backbone
 
How we REST
How we RESTHow we REST
How we REST
 
Getting Your Hooks Into Cordova
Getting Your Hooks Into CordovaGetting Your Hooks Into Cordova
Getting Your Hooks Into Cordova
 
Ruta de El Hereje. Miguel Delibes.Valladolid.
Ruta de El Hereje. Miguel Delibes.Valladolid.Ruta de El Hereje. Miguel Delibes.Valladolid.
Ruta de El Hereje. Miguel Delibes.Valladolid.
 
Marketing for developers tim cunningham
Marketing for developers tim cunninghamMarketing for developers tim cunningham
Marketing for developers tim cunningham
 
Working Remotely and Doing It Right
Working Remotely and Doing It RightWorking Remotely and Doing It Right
Working Remotely and Doing It Right
 
Los medios y materiales de enseñanza
Los medios y materiales de enseñanzaLos medios y materiales de enseñanza
Los medios y materiales de enseñanza
 
alfredo jimenez (1)
alfredo jimenez (1)alfredo jimenez (1)
alfredo jimenez (1)
 
Computador pcm07
Computador pcm07Computador pcm07
Computador pcm07
 

Similar to Our application got popular and now it breaks

Enough with the javas cript already! de Nicholas Zakas
Enough with the javas cript already! de Nicholas ZakasEnough with the javas cript already! de Nicholas Zakas
Enough with the javas cript already! de Nicholas ZakasKubide
 
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...John McCaffrey
 
Windy cityrails performance_tuning
Windy cityrails performance_tuningWindy cityrails performance_tuning
Windy cityrails performance_tuningJohn McCaffrey
 
Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!Nicholas Zakas
 
Building Faster Websites
Building Faster WebsitesBuilding Faster Websites
Building Faster WebsitesCraig Walker
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB
 
Ajax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesAjax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesDoris Chen
 
YGLF 2015 - Boom Performance | Eran Zinman (daPulse)
YGLF 2015 -  Boom Performance | Eran Zinman (daPulse)YGLF 2015 -  Boom Performance | Eran Zinman (daPulse)
YGLF 2015 - Boom Performance | Eran Zinman (daPulse)Eran Zinman
 
BOOM Performance
BOOM PerformanceBOOM Performance
BOOM Performancedapulse
 
DrupalCampLA 2011 - Drupal frontend-optimizing
DrupalCampLA 2011 - Drupal frontend-optimizingDrupalCampLA 2011 - Drupal frontend-optimizing
DrupalCampLA 2011 - Drupal frontend-optimizingAshok Modi
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX DesignersAshlimarie
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB
 
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital MarketersSearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital MarketersDistilled
 
Build Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje JurišićBuild Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje JurišićMeetMagentoNY2014
 
MongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch TutorialMongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch TutorialMongoDB
 
6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performanceEngine Yard
 
Yeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsYeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsclimboid
 
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
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizationsChris Love
 

Similar to Our application got popular and now it breaks (20)

Enough with the javas cript already! de Nicholas Zakas
Enough with the javas cript already! de Nicholas ZakasEnough with the javas cript already! de Nicholas Zakas
Enough with the javas cript already! de Nicholas Zakas
 
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
 
Windy cityrails performance_tuning
Windy cityrails performance_tuningWindy cityrails performance_tuning
Windy cityrails performance_tuning
 
Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!
 
Building Faster Websites
Building Faster WebsitesBuilding Faster Websites
Building Faster Websites
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
 
Ajax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesAjax Performance Tuning and Best Practices
Ajax Performance Tuning and Best Practices
 
YGLF 2015 - Boom Performance | Eran Zinman (daPulse)
YGLF 2015 -  Boom Performance | Eran Zinman (daPulse)YGLF 2015 -  Boom Performance | Eran Zinman (daPulse)
YGLF 2015 - Boom Performance | Eran Zinman (daPulse)
 
BOOM Performance
BOOM PerformanceBOOM Performance
BOOM Performance
 
DrupalCampLA 2011 - Drupal frontend-optimizing
DrupalCampLA 2011 - Drupal frontend-optimizingDrupalCampLA 2011 - Drupal frontend-optimizing
DrupalCampLA 2011 - Drupal frontend-optimizing
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
 
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital MarketersSearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
 
Build Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje JurišićBuild Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje Jurišić
 
MongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch TutorialMongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch Tutorial
 
Sql Portfolio
Sql PortfolioSql Portfolio
Sql Portfolio
 
6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performance
 
Yeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsYeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web apps
 
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
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations
 

More from devObjective

Raspberry Pi a la CFML
Raspberry Pi a la CFMLRaspberry Pi a la CFML
Raspberry Pi a la CFMLdevObjective
 
Effective version control
Effective version controlEffective version control
Effective version controldevObjective
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernizationdevObjective
 
Using type script to build better apps
Using type script to build better appsUsing type script to build better apps
Using type script to build better appsdevObjective
 
Csp and http headers
Csp and http headersCsp and http headers
Csp and http headersdevObjective
 
Who owns Software Security
Who owns Software SecurityWho owns Software Security
Who owns Software SecuritydevObjective
 
Naked and afraid Offline mobile
Naked and afraid Offline mobileNaked and afraid Offline mobile
Naked and afraid Offline mobiledevObjective
 
Web hackingtools 2015
Web hackingtools 2015Web hackingtools 2015
Web hackingtools 2015devObjective
 
Node without servers aws-lambda
Node without servers aws-lambdaNode without servers aws-lambda
Node without servers aws-lambdadevObjective
 
Garbage First and You!
Garbage First and You!Garbage First and You!
Garbage First and You!devObjective
 
Paying off emotional debt
Paying off emotional debtPaying off emotional debt
Paying off emotional debtdevObjective
 
My SQL Skills Killed the Server
My SQL Skills Killed the ServerMy SQL Skills Killed the Server
My SQL Skills Killed the ServerdevObjective
 
Authentication Control
Authentication ControlAuthentication Control
Authentication ControldevObjective
 
Multiply like rabbits with rabbit mq
Multiply like rabbits with rabbit mqMultiply like rabbits with rabbit mq
Multiply like rabbits with rabbit mqdevObjective
 
Intro to TDD & BDD
Intro to TDD & BDDIntro to TDD & BDD
Intro to TDD & BDDdevObjective
 

More from devObjective (20)

Lets git together
Lets git togetherLets git together
Lets git together
 
Raspberry Pi a la CFML
Raspberry Pi a la CFMLRaspberry Pi a la CFML
Raspberry Pi a la CFML
 
Command box
Command boxCommand box
Command box
 
Effective version control
Effective version controlEffective version control
Effective version control
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
 
Using type script to build better apps
Using type script to build better appsUsing type script to build better apps
Using type script to build better apps
 
Csp and http headers
Csp and http headersCsp and http headers
Csp and http headers
 
Who owns Software Security
Who owns Software SecurityWho owns Software Security
Who owns Software Security
 
Naked and afraid Offline mobile
Naked and afraid Offline mobileNaked and afraid Offline mobile
Naked and afraid Offline mobile
 
Web hackingtools 2015
Web hackingtools 2015Web hackingtools 2015
Web hackingtools 2015
 
Node without servers aws-lambda
Node without servers aws-lambdaNode without servers aws-lambda
Node without servers aws-lambda
 
I am-designer
I am-designerI am-designer
I am-designer
 
Garbage First and You!
Garbage First and You!Garbage First and You!
Garbage First and You!
 
Fusion Reactor
Fusion ReactorFusion Reactor
Fusion Reactor
 
Paying off emotional debt
Paying off emotional debtPaying off emotional debt
Paying off emotional debt
 
My SQL Skills Killed the Server
My SQL Skills Killed the ServerMy SQL Skills Killed the Server
My SQL Skills Killed the Server
 
Authentication Control
Authentication ControlAuthentication Control
Authentication Control
 
Multiply like rabbits with rabbit mq
Multiply like rabbits with rabbit mqMultiply like rabbits with rabbit mq
Multiply like rabbits with rabbit mq
 
Preso slidedeck
Preso slidedeckPreso slidedeck
Preso slidedeck
 
Intro to TDD & BDD
Intro to TDD & BDDIntro to TDD & BDD
Intro to TDD & BDD
 

Recently uploaded

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Recently uploaded (20)

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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

Our application got popular and now it breaks