SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
RETHINKING ANGULAR

ARCHITECTURE & 

PERFORMANCE
MarkPieszak
MarkPieszak
Mark Pieszak
CO-FOUNDER TRILON.IO







Angular Universal Team
NestJS Core Team



Open Source
ASP.NET Core + Angular Universal starter

ASP.NET Core + Vue starter

Angular Azure Application Insights

MarkPieszak
WWW.TRILON.IO
MarkPieszak
ARCHITECTURE
MarkPieszak
MarkPieszak
APP MODULE
Main.ts

platformBrowser()
MODULE
MODULE MODULE
MarkPieszak
APP MODULE
Main.ts

platformBrowser()
MODULE
MODULE MODULE
Bundle 

& 

Deploy
MarkPieszak
APP MODULE
Main.ts

platformBrowser()
MODULE
MODULE MODULE
Request
Response
Bundle 

& 

Deploy
HOW DO 

USERS SEE

OUR APP?
MarkPieszak
MarkPieszak
Loading
Request
Response
MarkPieszak
Request
Response
MarkPieszak
Loading
Request
Response
FAST
INTERACTIVE
RESPONSIVE
IMPROVING THE USER EXPERIENCE
MarkPieszak
PERFORMANCE
MATTERS
MarkPieszak
Walmart saw a 1% increase in revenue for every
100ms improvement in performance.
WHERE DO WE BEGIN?
MarkPieszak
MarkPieszak
> LIGHTHOUSE
MarkPieszak
> ANALYZE

> EXPERIMENT

> AUDIT
THE 

LIGHTHOUSE

GAME
MarkPieszak
MarkPieszak
The Dream
MarkPieszak
Reality
WHAT TOOLS 

CAN WE USE?
MarkPieszak
MarkPieszak
Webpack

Bundle

Analyzer
> ANALYZE
Helps visualize Architecture

Vendor / 3rd party libs
Main bundle
Lazy chunks
MarkPieszak
> WEBPACK BUNDLE ANALYZER
MarkPieszak
Webpack

Bundle

Analyzer
> ANALYZE
SETTING
GOALS
MarkPieszak
Reduce “Main Thread” execution time
Objective:
Minimize main bundle (wherever possible)
- Remove unneeded code & imports from “main” 

- Remove as many third party libs from “main”

MarkPieszak
MarkPieszak
MarkPieszak
FAST
RESPONSIVE
INTERACTIVE
First Initial Paint
Small Bundle payload
TTI ( Time-to-interactive )
TIP: 

Be careful not to abuse or misuse imports here.



>> Import only what you need!

MarkPieszak
# 1 > LAZY-LOADING (ROUTES)
FAST
@({

imports: [
UiButtonModule,

UiModalModule,

UiActionModule,

CommonModule

// ...
]

})
export class OrderModule {}
FAST
# 1 > LAZY-LOADING (ROUTES)
MarkPieszak
ORDER MODULEABOUT MODULE CART MODULE
DATA MODULE
TABLE MODULE
3rd Party Lib
UI-MODAL MODULE
AUTH MODULE AUTH MODULE
DATA MODULE
FAST
# 1 > LAZY-LOADING (ROUTES)
TIP:

Use ngx-quicklink (PreloadingStrategy) 

Preload lazy modules when:

they are VISIBLE & the browser is idle.

Bonus points: 

GuessJS
MarkPieszak
FAST
# 2 > PRELOADING STRATEGIES
TIP:

Dynamically Lazy-Loading Modules & Components
Use tools like: ngx-loadable
MarkPieszak
FAST
# 3 > LAZY LOADING (NON-ROUTABLE)
<ngx-loadable 

module="lazy" 

[show]="show">

</ngx-loadable>
MarkPieszak
TIP:

Defer loading images until visible
Use tools like: ng-lazyload-image
FAST
# 4 > DEFER IMAGE LOADING
<img 

[defaultImage]=“defaultImage” 

[lazyLoad]="image">
MarkPieszak
What about Content 

“Below the Fold”
FAST
MarkPieszak
Original Content
Can we Lazy Load 

this entire Module?
Or maybe just Lazy Load 

all of these images?
FAST
TIP:

Static Assets on a CDN / edge server delivery
ie: Cloudflare

File Compression (css, html, js)
At a minimum: GZIP
Ideally: Brotli
Outperforms Gzip
JS files ~14% smaller
MarkPieszak
COMPRESSED

Response
FAST
# 5 > CDN & COMPRESSION
MarkPieszak
PROS
• SEO, Social-media previews, non-JS crawl-able
• Faster “initial paint”

CONS
Slower TTI ( Time-to-interactive )
aka: Angular Universal
# 6 > SERVER-SIDE RENDERING (SSR)
FAST
MarkPieszak
Loadin
Time
Initial “Paint” Fully Bootstrapped App
> CLIENT-SIDE RENDERING (CSR)
FAST
MarkPieszak
Time
> SERVER-SIDE RENDERING (SSR)
Initial “Paint” Fully Bootstrapped App
FAST
MarkPieszak
Loading
FAST
INTERACTIVE
Click / Scroll / all functioning ( esp during SSR )
TIP:

Make sure your Initial SSR “User Experience” 

is still fairly interactive.
INTERACTIVE
# 1 > SSR - ENSURE INTERACTIVITY
MarkPieszak
> SSR - ENSURE INTERACTIVITY
INTERACTIVE
Time
Initial “Paint” Fully Bootstrapped App
Mind the “gap”Can users interact ?
MarkPieszak
> EXPERIMENT
Use <a [routerLink]> 

over (click)=“”
events for the most 

important navigation
INTERACTIVE
MarkPieszak
> EXPERIMENT
Can we setup a [routerLink] navigation 

to a menu”-like Route page ?
INTERACTIVE
MarkPieszak
> EXPERIMENT
Scroll Functionality
Can the user still scroll and see at least 

SOME important information
INTERACTIVE
Two types of SSR



Run-time: Dynamic
Angular Server-Side Rendering (SSR) # 1 ( continued )
INTERACTIVE
/products
Request
Response
Serialize App
Hit API
Two types of SSR



Build-time: Pre-rendering
Angular Server-Side Rendering (SSR) # 1 ( continued )
INTERACTIVE
/products
Request
Response
Products.html
TIP:

Opt for Pre-rendering routes (over Dynamic SSR)
wherever possible for faster responses.
Cache Pre-Rendered HTML 

(File Storage / MemCache / Redis) where possible
Angular Server-Side Rendering (SSR) # 1 ( continued )
INTERACTIVE
Angular Server-Side Rendering (SSR) # 1 ( continued )
INTERACTIVE
TIPS & TRICKS: 

You can setup all 3 types of rendering



Pre-rendering

app.get(SomeRoutes) => res.send( prerenderedHtml )



Dynamic SSR

app.get(OtherRoutes) => await renderModuleFactory()



Client-Side Rendering (CSR)

app.get(*). => res.send( originalIndexHtml )
# 1 ( continued )
Angular Server-Side Rendering (SSR)
MUST HAVE:

Transfer (re-use) Http responses between SSR => CSR
TransferHttpCacheModule from 

@NgUniversal/Common

TIP:

Keep your API calls “lean” to not send too much
payload data down with the Html
INTERACTIVE
MarkPieszak
Loading
FAST
RESPONSIVE
Fast Web/Tablet/Mobile versions
Usable even with slow (or zero) internet
MarkPieszak
TIP:
Setup a Service Worker

Cache assets (JS/CSS/HTML/images) to 

speed up subsequent page loads
RESPONSIVE
# 6 > PWA (PROGRESSIVE WEB APP)
FIND THE RIGHT BALANCE
MarkPieszak
Loading
FAST
RESPONSIVE
INTERACTIVE
Request
Response
> REMEMBER WHAT MATTERS
MarkPieszak
THE
USER

EXPERIENCE
Keep that MAIN bundle small
Move whatever functionality you can out of AppModule /
main.bundle
Try to keep NgModules lean / compact
Be intentional with imports
MarkPieszak
>>> IN CONCLUSION
Lazy-Load sections of your app - when visible
Images
Modules
Components

If you’re doing SSR
Remember to maintain some functionality during the
first initial paint
MarkPieszak
>>> IN CONCLUSION
MarkPieszak
Angular Performance Checklist
> ADDITIONAL RESOURCES
by: Minko Gevchev
Why it's tricky to measure Server-side Rendering performance
by: David East
THANK 

YOU !
@MarkPieszak

Contenu connexe

Tendances

Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3g
vasya10
 

Tendances (20)

Fluent 2018: Measuring What Matters
Fluent 2018: Measuring What MattersFluent 2018: Measuring What Matters
Fluent 2018: Measuring What Matters
 
Cross-browser testing in the real world
Cross-browser testing in the real worldCross-browser testing in the real world
Cross-browser testing in the real world
 
Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring BootBuilding a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring Boot
 
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
 
Cassandra Summit 2015 - A State of Xen - Chaos Monkey & Cassandra
Cassandra Summit 2015 - A State of Xen - Chaos Monkey & CassandraCassandra Summit 2015 - A State of Xen - Chaos Monkey & Cassandra
Cassandra Summit 2015 - A State of Xen - Chaos Monkey & Cassandra
 
Hacking Web Performance
Hacking Web Performance Hacking Web Performance
Hacking Web Performance
 
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
 
What's New with Confluence Connect
What's New with Confluence ConnectWhat's New with Confluence Connect
What's New with Confluence Connect
 
React for Re-use: Creating UI Components with Confluence Connect
React for Re-use: Creating UI Components with Confluence ConnectReact for Re-use: Creating UI Components with Confluence Connect
React for Re-use: Creating UI Components with Confluence Connect
 
Beyond AEM Curl Commands
Beyond AEM Curl CommandsBeyond AEM Curl Commands
Beyond AEM Curl Commands
 
Build social network in 4 weeks
Build social network in 4 weeksBuild social network in 4 weeks
Build social network in 4 weeks
 
(WEB305) Migrating Your Website to AWS | AWS re:Invent 2014
(WEB305) Migrating Your Website to AWS | AWS re:Invent 2014(WEB305) Migrating Your Website to AWS | AWS re:Invent 2014
(WEB305) Migrating Your Website to AWS | AWS re:Invent 2014
 
Rapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoopRapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoop
 
FrenchKit: End to End Application Development with Swift
FrenchKit: End to End Application Development with SwiftFrenchKit: End to End Application Development with Swift
FrenchKit: End to End Application Development with Swift
 
Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3g
 
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
 
Multiplication and division of calabash tests
Multiplication and division of calabash testsMultiplication and division of calabash tests
Multiplication and division of calabash tests
 
React in production (react global summit 2021)
React in production (react global summit 2021)React in production (react global summit 2021)
React in production (react global summit 2021)
 
Advanced Appium
Advanced AppiumAdvanced Appium
Advanced Appium
 

Similaire à Rethinking Angular Architecture & Performance

Similaire à Rethinking Angular Architecture & Performance (20)

The ultimate guide to optimize your react native app performance in 2022
The ultimate guide to optimize your react native app performance in 2022The ultimate guide to optimize your react native app performance in 2022
The ultimate guide to optimize your react native app performance in 2022
 
Rails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan GusievRails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan Gusiev
 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
 
Angular js mobile jsday 2014 - Verona 14 may
Angular js mobile   jsday 2014 - Verona 14 mayAngular js mobile   jsday 2014 - Verona 14 may
Angular js mobile jsday 2014 - Verona 14 may
 
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
 
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
 
Get the most out of Oracle Data Guard - POUG version
Get the most out of Oracle Data Guard - POUG versionGet the most out of Oracle Data Guard - POUG version
Get the most out of Oracle Data Guard - POUG version
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 
Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)
 
Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
 
Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)
 
Demystifying web performance tooling and metrics
Demystifying web performance tooling and metricsDemystifying web performance tooling and metrics
Demystifying web performance tooling and metrics
 
Introduction to meteor
Introduction to meteorIntroduction to meteor
Introduction to meteor
 
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaCloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
 
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017   ember.js - escape the javascript fatigueNode.js meetup 17.05.2017   ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigue
 
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learned
 
Enterprise Application Migration
Enterprise Application MigrationEnterprise Application Migration
Enterprise Application Migration
 
React Native +Redux + ES6 (Updated)
React Native +Redux + ES6 (Updated)React Native +Redux + ES6 (Updated)
React Native +Redux + ES6 (Updated)
 

Dernier

Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
dharasingh5698
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssuser89054b
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
ankushspencer015
 

Dernier (20)

CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
Intro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdfIntro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdf
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
 

Rethinking Angular Architecture & Performance