High Performance JavaScript Conference 2010 in San Francisco Bay Area
Table of Contents
- Summary
- Tasks
- Etherpad (CMO intall) tools
- YSlow! Beautified JavaScript (WebDev ) debugging
- FireQuery performance
- detach() to ensure that event handlers performance
- Audit for repeat use DOM selecctors performance
- Create a progressive enhancement prototype with movie player performance
- Audit site for failure to use DOM fragments performance
- Upgrade to 1.4.2 to simplify detach() and remove() performance
- Get slideshare for performance
- Review labjs
- Define a core Classmates platform
- Set a CDN reviewer
- Sessions
- Welcome and Introduction Apr. 24 2010, 10:00 AM
- Ads, widgets, and analytics - Oh my! Apr. 24 2010, 11:00 AM
- Google webmaster tools tools
- YSlow! tools
- Page Speed tools
- TODO Sergie performance for YSlow
- webPagetest tools
- More than half of a site can now be third party content
- appendChild () vs. insertBefore()
- Forced sequential
- Frag Tag
- Browser Disk cache
- Lack of progressive rendering
- Be most concerned with JavaScript
- Split the JavaScript
- Performance Redesigns
- All JavaScript Beutified
- Browers Scope for Usability Testing
- What are the performance impacts from Facebook Widgets
- Tasks
- High Performance jQuery Apr. 24 2010, 12:00 PM
- Look at the initial object container for the plugin that needs to be applied against the page
- What is the profiling and timing for the plugin
- When does jQuery do more than we need
- When are we not cleaning up the work
- CSS vs. .show() & hide() css
- .each() vs. for
- Cache the DOM selectors for common items todo
- Structure
- The Microsoft & jQuery Story and the New Templating Plugin Apr. 24 2010, 1:45 PM
- Alternative: High Performance JavaScript
- Audit reflow activity
- Trace all reflows
- Don't do offset calculations
- If you need offset calculations do them early
- Use DOMFramement rather than in DOM manipulations
- Consider using detact() before working on the DOM
- Deeper the prototype chain the more expensive the lookup
- Deeper the scope chain the more expensive the lookup
- Create clean presentation process
- Split intensive looks with setTimeOut(myFuncFrag, 50)
- How To Manage Large Applications with jQuery Apr. 24 2010, 3:00 PM
- Alternative: Learning From the Best jQuery Plugins
- Object Oriented jQuery with MooTools Apr. 24 2010, 3:45 PM
- $(document).ready balloons
- Can't reuse
- Need to have stateful objects
- Quickly switch background: command + option + control + 8
- Use mootools for core object function
- Extends: Would need to find out what the prototype exists for "Class"
- Extends: How to implement static variables
- How much of this would need to be rolled with subclass deletes
- Other OO practices
- jQuery UI Fundamentals Apr. 24 2010, 4:30 PM
- Special Events: Beyond Custom Events Apr. 24 2010, 5:15 PM
- Automated UI testing with jQuery Apr. 25 2010, 10:00 AM
- jQuery UI Widget Factory Apr. 25 2010, 11:00 AM
- Designing Interactions with jQuery Apr. 25 2010, 11:45 AM
- Inside ThemeRoller 2.0: Refactoring for Speed Apr. 25 2010, 1:15 PM
- Fast, modular code with jQuery and RequireJS Apr. 25 2010, 2:00 PM
- Organizing Your Code with Testable jQuery Plugins Apr. 25 2010, 2:45 PM
- Building a game engine with jQuery Apr. 25 2010, 3:30 PM
- FireQuery
- FireQuery provides plugin support for jQuery Lint
- YSlow! shows All JS Beautified
- Aggregation of YSlow! and Page Speed reports
- WebPagetest now shows rendering time video
Summary
http://events.jquery.org/2010/sf-bay-area/ http://speakerrate.com/events/365-jquery-conference-2010-san-francisco-bay-area
The San Francisco Bay Area conference will be held at the Microsoft Silicon Valley Campus Conference Center in Mountain View, California
Tasks
Etherpad (CMO intall) tools
YSlow! Beautified JavaScript (WebDev ) debugging
Beautified JavaScript for: http://wal.sh/
- http://www.google-analytics.com/ga.js
- http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
- http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js
- http://wal.sh/static/default.js
- http://connect.facebook.net/en_US/all.js
- http://static.ak.fbcdn.net/rsrc.php/z49PH/hash/9p47jvzp.js
- inline script block #1
- inline script block #2
- inline script block #3
FireQuery performance
detach() to ensure that event handlers performance
Audit for repeat use DOM selecctors performance
Create a progressive enhancement prototype with movie player performance
Audit site for failure to use DOM fragments performance
Upgrade to 1.4.2 to simplify detach() and remove() performance
Get slideshare for performance
Review labjs
Define a core Classmates platform
Set a CDN reviewer
jQuery
jQueryUI
Core DOM
Sessions
Welcome and Introduction Apr. 24 2010, 10:00 AM
Over 500 People; largest JavaScript conference.
People at table from American Apparel; jQuery 1.4.2 with Dynamo.
Ads, widgets, and analytics - Oh my! Apr. 24 2010, 11:00 AM
http://speakerrate.com/talks/2962-ads-widgets-and-analytics-oh-my
Site speed in search algorithm.
Do large companies have an easier time to enhance performance.
Regression time, many teams build the components for the page, risk assessment.
Tools recommended are:
Google webmaster tools tools
YSlow! tools
Better with sprites.
Page Speed tools
Better with deprecated styles.
TODO Sergie performance for YSlow
webPagetest tools
Show a video of the comparison between the load of the systems.
This is similar to
http://code.google.com/speed/page-speed/docs/using.html#activities
More than half of a site can now be third party content
appendChild () vs. insertBefore()
For async script loading.
Interesting change in the load behavior for Google Analytics. Also look at YUI loader's implementation for how to add scripts
getHardpoint() is used by ??? (Fabebook)
Forced sequential
document.write to perform the sequential loads and redirectors.
Ad network and inventory.
This won't be solved without involvement from the Ad network. The business requirements would need to be reviewed to determine how those businesses are run.
Facebook has the benefit running internally.
Frag Tag
Browser Disk cache
Lack of progressive rendering
What is the amount of rendring provided during the load of the page.
Be most concerned with JavaScript
It blocks; look at the parallel options.
Split the JavaScript
Performance Redesigns
All JavaScript Beutified
Browers Scope for Usability Testing
What are the performance impacts from Facebook Widgets
Tasks
Message the YSlow! Beautified JavaScript view
Look at HAR for exporting
Use videos showing progressive enhancements and rendering
High Performance jQuery Apr. 24 2010, 12:00 PM
http://speakerrate.com/talks/2964-high-performance-jquery http://uk.linkedin.com/pub/robert-duffy/3/315/247
Another origin; review of client technologies.
Look at the initial object container for the plugin that needs to be applied against the page
What is the profiling and timing for the plugin
When does jQuery do more than we need
Cases where binding accumulates on objects.
When are we not cleaning up the work
Example was for DOM elements that are no longer being used.
CSS vs. .show() & hide() css
Is this always the case that we don't want to use show() and hide().
Why is show and hide so expensive?
.each() vs. for
Cache the DOM selectors for common items todo
Structure
Create the module
$(function() {
var
})
Set up the Object
The Microsoft & jQuery Story and the New Templating Plugin Apr. 24 2010, 1:45 PM
Alternative: High Performance JavaScript
Audit reflow activity
Trace all reflows
Don't do offset calculations
If you need offset calculations do them early
Use DOMFramement rather than in DOM manipulations
Consider using detact() before working on the DOM
Deeper the prototype chain the more expensive the lookup
Deeper the scope chain the more expensive the lookup
Create clean presentation process
Simple, humorous introduction
Walk the points
Repeat all core points
Split intensive looks with setTimeOut(myFuncFrag, 50)
How To Manage Large Applications with jQuery Apr. 24 2010, 3:00 PM
Alternative: Learning From the Best jQuery Plugins
http://speakerrate.com/talks/2968-learning-from-the-best-jquery-plugins http://marcgrabanski.com/
Reviewed over 1000 plugins.
Tried to review items recommended online and Twitter.
Examples
BBQ
ColorBox
Provides a fair number of poptions.
DatePicker
Flip!
Form
Notes that the key feature is AJAX file upload.
Flot
jCarousel
NoSWFUpload
Uploadify
Validation
Tooltip
Accordian
SWFObject
Best Practices
Make demos available
Make a huge list of demos available to show how all functionality is available .
Make sure the options are available
Explore the feature area rather than assuming
Weight new features against complexity of the API
Object Oriented jQuery with MooTools Apr. 24 2010, 3:45 PM
$(document).ready balloons
Can't reuse
Need to have stateful objects
Quickly switch background: command + option + control + 8
Use mootools for core object function
Need to have something like the review against the best practices.
Theis creates the constructors nand the instanaces that are needed. The consturctor tfor this seems ood.
The only thing in mootools core only have class functionality.
Extends: Would need to find out what the prototype exists for "Class"
Extends: How to implement static variables
How much of this would need to be rolled with subclass deletes
jQuery UI Fundamentals Apr. 24 2010, 4:30 PM
Special Events: Beyond Custom Events Apr. 24 2010, 5:15 PM
Automated UI testing with jQuery Apr. 25 2010, 10:00 AM
jQuery UI Widget Factory Apr. 25 2010, 11:00 AM
Designing Interactions with jQuery Apr. 25 2010, 11:45 AM
Inside ThemeRoller 2.0: Refactoring for Speed Apr. 25 2010, 1:15 PM
Fast, modular code with jQuery and RequireJS Apr. 25 2010, 2:00 PM
Organizing Your Code with Testable jQuery Plugins Apr. 25 2010, 2:45 PM
Building a game engine with jQuery Apr. 25 2010, 3:30 PM
FireQuery
FireQuery provides plugin support for jQuery Lint
YSlow! shows All JS Beautified
It didn't look like many people in the audience were aware of this new new that should move the manual process of something like
js beautify-cl.js http://s.cmcdn.com/graphics/js/lib/generic.js
Firebug > YSlow > Tools > All JS Beautified Show all JavaScript code in this document in an easy to read format
Aggregation of YSlow! and Page Speed reports
http://www.sergeychernyshev.com/blog/automating-page-speed-and-yslow-monitoring/
I'm still working on the implementation of ShowSlow against prototype02 but as a temporary aggregation I'm using the following user set properties in about:config in Firefox:
extensions.PageSpeed.beacon.fullresults.url;http://jwalsh.corp.sea1.cmates.com/rx extensions.PageSpeed.beacon.minimal.url;http://jwalsh.corp.sea1.cmates.com/rx extensions.yslow.beaconUrl;http://jwalsh.corp.sea1.cmates.com/rx extensions.yslow.optinBeacon;true
Configuration is noted in
http://developer.yahoo.com/yslow/help/beacons.html
Alternatives:
24mar2009.xls
This mirrors some of the work done for web page http://xfiles/display/area51/PagetestPlugin
WebPagetest now shows rendering time video
The public version of page http://sourceforge.net/apps/mediawiki/pagetest/index.php?title=Main_Page