Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Portfolio Web | 26 | 7 years ago | mit | CSS | ||||||
Static portfolio website template | ||||||||||
Portfolio Tracker | 7 | 3 years ago | JavaScript | |||||||
Stock Management App implemented as MicroServices | ||||||||||
Thejunkland.com | 6 | 3 days ago | 3 | other | TypeScript | |||||
Personal blog and portfolio of Jesse Luoto | ||||||||||
Valeriopierbattista.com 2016 | 6 | 7 years ago | JavaScript | |||||||
My website portfolio - Built on Jekyll | ||||||||||
Angular Portfolio | 6 | 8 years ago | mit | JavaScript | ||||||
Portfolio site built with AngularJS | ||||||||||
Luciovilla.com | 6 | 22 days ago | TypeScript | |||||||
My portfolio and blog built with Next.js, Tailwind CSS and Notion. Deployed on Vercel. | ||||||||||
Davidollerhead.com | 5 | 3 years ago | 2 | SCSS | ||||||
Another iteration of my portfolio site, this time with jekyll. | ||||||||||
Portfolio Kanban Alternate Field | 5 | 6 years ago | 4 | mit | JavaScript | |||||
Custom Grid With Deep Export | 5 | 2 years ago | 14 | mit | JavaScript | |||||
Custom Grid App with a deep export option | ||||||||||
Query Counter | 4 | 5 years ago | 2 | mit | JavaScript | |||||
Simple app that lets you set up one or more query with some explanatory text so that it can display a simple count of the items that match the query(s). |
{ "name": "website-optimization", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.1", "grunt-contrib-cssmin": "^1.0.1", "grunt-contrib-htmlmin": "^1.4.0", "grunt-contrib-imagemin": "^1.0.1", "grunt-purifycss": "^0.1.1", "grunt-responsive-images": "^0.1.9" } }
npm install
inside the directory.npm install grunt-contrib-cssmin --save-dev
npm install grunt-purifycss --save-dev
npm install grunt-contrib-htmlmin --save-dev
npm install grunt-responsive-images --save-dev
npm install grunt-contrib-imagemin --save-dev
Gruntfile.js
for setup for each task.grunt
to run the Grunt script.index.html
media="print"
to the css/print.css
linkpizzeria.jpg
to a width of 100 and compress all images using grunt-contrib-imageminstyle.css
(several body selectors combined)The updatePositions
function was updated to read the document's scrollTop property
fewer times. This was causing the animation to update in very quick succession for no reason.
Guidance on avoiding layout thrashing was found on the Google Developers site.
The changePizzaSizes
function contained a lot of unncessary computations for every single
random pizza on the page. Since the pizzas are all the same size, the dx
and newwidth
variables only need to be calculated once for the first pizza in the array. The array was also generated once
using a document selector instead of selecting all the elements every time for every for loop. The time to
resize pizzas is now well under 5ms and is actually under 1ms based on these changes.
I also calculated the length of the array prior to the for loop instead of the loop
having to calculate it each iteration. The innerHeight of the window was used to determine how many
animated pizzas needed to be drawn.
text-transform: capitalize
into the css
for all h4
elements.document.querySelector
was replaced by document.getElementbyID
or document.getElementsbyClassName
where applicable
based on information contained here.document.createDocumentFragment
to add the pizzas/toppings and animated pizzas to the page.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.
To get started, check out the repository and inspect the code.
####Part 1: Optimize PageSpeed Insights score for index.html
Some useful tips to help you get started:
$> cd /path/to/your-project-folder
$> python -m SimpleHTTPServer 8080
$> cd /path/to/your-project-folder
$> ./ngrok http 8080
Profile, optimize, measure... and then lather, rinse, and repeat. Good luck!
####Part 2: Optimize Frames per Second in pizza.html
To optimize views/pizza.html, you will need to modify views/js/main.js until your frames per second rate is 60 fps or higher. You will find instructive comments in main.js.
You might find the FPS Counter/HUD Display useful in Chrome developer tools described here: Chrome Dev Tools tips-and-tricks.
The portfolio was built on Twitter's Bootstrap framework. All custom styles are in dist/css/portfolio.css
in the portfolio repo.