After analyzing the performance of our application, we will start working on some performance optimizations. Many of these optimizations involve the concatenation and compression of some of the application's components.
We will also have to create a new version of the concatenated and compressed contents every time one of the original components (not concatenated and not compressed) changes. Because these include many highly repetitive tasks, we can use tools like Gulp or Webpack to perform many of these tasks for us.
We can use these tools to concatenate and compress components, optimize images, generate a cache manifest file, and perform many other performance optimization tasks.