Skip to content

PaulMatencio/frontend-nanodegree-mobile-portfolio

 
 

Repository files navigation

Website Performance Optimization portfolio project

Your challenge, if you wish to accept it (and we sure hope you will), is to optimize this online portfolio for speed! In particular, optimize the critical rendering path and make this page render as quickly as possible by applying the techniques you've picked up in the Critical Rendering Path course.

####Part 1: Optimize PageSpeed Insights score for index.html

####GENERAL STRATEGIES

#####1) Minimize the size of HTML, CSS and JavaScript files

a) node.js gulp is used for this purpose. You can read the gulpfile.js under the project root directory <project-directory>

#####2) Minimize use of render blocking resources (CSS)

a) Use media queries on <link> to unblock rendering where it is possible
b) inline CSS
c) async load of CSS google fonts

#####3) Minimize use of parser blocking resources (JS)

a) Defer JavaScript execution
b) Use async attribute on <script>  when it is possible

###TOOLS:

The source codes are in the /src The deployment ( minimiziing, inlining, optimizing of the source codes) from the /src directory to is done via node.js gulp.

####1) convert Linux command line to resize images size ####2) node.js gulp. The gulpfile.js contains all the tasks needed to implement the above general strategies

###GOOGLE PAGESPEED tests:

####index.html http://paulmatencio.github.io/frontend-nanodegree-mobile-portfolio/index.html 92 / 100 Mobile Speed 94 / 100 Deskzop Speed ####project-2048.html http://paulmatencio.github.io/frontend-nanodegree-mobile-portfolio/project-2048.html 94 / 100 Mobile Speed 96 / 100 Deskzop Speed ####project-2048.html http://paulmatencio.github.io/frontend-nanodegree-mobile-portfolio/project-mobile.html 94 / 100 Mobile Speed 96 / 100 Deskzop Speed ####project-2048.html http://paulmatencio.github.io/frontend-nanodegree-mobile-portfolio/project-webperf.html 94 / 100 Mobile Speed 96 / 100 Deskzop Speed

###Part 2: Optimize Frames per Second in pizza.html

Add viewport to improve user experience experience Apply same stratgies for part 1

#####LOOP OPTIMZATION

#####Reduce the number of loop counts

Reduce the number of loops when over looping is uncessary for better user eperience. As for instance, reduce the number of moving pizza from 200 to 50 or even less. The current main.js has 40 moving pizzas.

#####Reduce the cost of loop

Move invariant  off the loop. As for instance, the computation for old size and new size of the pizza. This can be done ouside the resizePizza() loop once.

####Objectives 60 fps or higher. Tome to resize pizzas < 5ms

You might find the FPS Counter/HUD Display useful in Chrome developer tools described here: [Chrome Dev Tools tips-and-tricks](https://developer.chrome.com/devtools/docs/tips-and-tricks).

Time to generate pizzas on load: 16.015ms <<<

main.js:1 10 Average time to generate last 10 frames: 6.298500000000135ms main.js:1 20 Average time to generate last 10 frames: 4.834500000000207ms main.js:1 30 Average time to generate last 10 frames: 4.370500000000175ms main.js:1 40 Average time to generate last 10 frames: 4.839499999999862ms main.js:1 50 Average time to generate last 10 frames: 4.640999999999986ms main.js:1 60 Average time to generate last 10 frames: 4.798500000000058ms main.js:1 70 Average time to generate last 10 frames: 4.597500000000037ms main.js:1 80 Average time to generate last 10 frames: 4.682999999999902ms main.js:1 90 Average time to generate last 10 frames: 5.227499999999873ms main.js:1 100 Average time to generate last 10 frames: 5.172999999999865ms

Time to resize pizzas: 3.695000000006985ms

###SUPPORT DOCUMENTATION ####Udacity P4 supporting courses

####Udacity discussion forum

####Udacity team room

Optimization Tips and Tricks

Customization with Bootstrap

The portfolio was built on Twitter's Bootstrap framework. All custom styles are in dist/css/portfolio.css in the portfolio repo.

Sample Portfolios

Feeling uninspired by the portfolio? Here's a list of cool portfolios I found after a few minutes of Googling.

Releases

No releases published

Packages

No packages published

Languages

  • HTML 54.0%
  • JavaScript 41.4%
  • CSS 4.6%