diff --git a/src/roadmaps/system-design/content/112-caching/100-client-caching.md b/src/roadmaps/system-design/content/112-caching/100-client-caching.md index 7bac9297d..5eb3b34d9 100644 --- a/src/roadmaps/system-design/content/112-caching/100-client-caching.md +++ b/src/roadmaps/system-design/content/112-caching/100-client-caching.md @@ -1 +1,8 @@ -# Client caching \ No newline at end of file +# Client caching + +Caches can be located on the client side (OS or browser), server side, or in a distinct cache layer. + +To learn more, visit the following links: + +- [Intro to Client Caching](https://github.com/donnemartin/system-design-primer#client%20caching) +- [Server side Client Caching](https://github.com/donnemartin/system-design-primer#reverse-proxy-web-server) \ No newline at end of file diff --git a/src/roadmaps/system-design/content/112-caching/101-cdn-caching.md b/src/roadmaps/system-design/content/112-caching/101-cdn-caching.md index b142ac918..0f150abeb 100644 --- a/src/roadmaps/system-design/content/112-caching/101-cdn-caching.md +++ b/src/roadmaps/system-design/content/112-caching/101-cdn-caching.md @@ -1 +1,10 @@ -# Cdn caching \ No newline at end of file +# CDN caching + +CDNs are considered a type of cache. + +A content delivery network (CDN) is a globally distributed network of proxy servers, serving content from locations closer to the user. Generally, static files such as HTML/CSS/JS, photos, and videos are served from CDN, although some CDNs such as Amazon's CloudFront support dynamic content. The site's DNS resolution will tell clients which server to contact. + +To learn more, visit the following links: + +- [What is CDN Cache?](https://github.com/donnemartin/system-design-primer#CDN%20cache) +- [CDN Caching](https://github.com/donnemartin/system-design-primer#content-delivery-network) \ No newline at end of file diff --git a/src/roadmaps/system-design/content/112-caching/102-web-server-caching.md b/src/roadmaps/system-design/content/112-caching/102-web-server-caching.md index 2c49af2fd..bf441be01 100644 --- a/src/roadmaps/system-design/content/112-caching/102-web-server-caching.md +++ b/src/roadmaps/system-design/content/112-caching/102-web-server-caching.md @@ -1 +1,7 @@ -# Web server caching \ No newline at end of file +# Web Server Caching + +Reverse proxies and caches such as Varnish can serve static and dynamic content directly. Web servers can also cache requests, returning responses without having to contact application servers. + +To learn more, visit the following links: + +- [Intro to Web Server Caching?](https://github.com/donnemartin/system-design-primer#web-server-caching) diff --git a/src/roadmaps/system-design/content/112-caching/103-database-caching.md b/src/roadmaps/system-design/content/112-caching/103-database-caching.md index ab93b48a5..75a8ac1e8 100644 --- a/src/roadmaps/system-design/content/112-caching/103-database-caching.md +++ b/src/roadmaps/system-design/content/112-caching/103-database-caching.md @@ -1 +1,7 @@ -# Database caching \ No newline at end of file +# Database Caching + +Your database usually includes some level of caching in a default configuration, optimized for a generic use case. Tweaking these settings for specific usage patterns can further boost performance. + +To learn more, visit the following links: + +- [Intro to Database-Caching?](https://github.com/donnemartin/system-design-primer#database-caching) diff --git a/src/roadmaps/system-design/content/112-caching/104-application-caching.md b/src/roadmaps/system-design/content/112-caching/104-application-caching.md index d944829c2..93f73c0e5 100644 --- a/src/roadmaps/system-design/content/112-caching/104-application-caching.md +++ b/src/roadmaps/system-design/content/112-caching/104-application-caching.md @@ -1 +1,7 @@ -# Application caching \ No newline at end of file +# Application Caching + +In-memory caches such as Memcached and Redis are key-value stores between your application and your data storage. Since the data is held in RAM, it is much faster than typical databases where data is stored on disk. RAM is more limited than disk, so cache invalidation algorithms such as least recently used (LRU) can help invalidate 'cold' entries and keep 'hot' data in RAM. + +Visit the following links to learn more: + +- [Intro to Application Caching](https://github.com/donnemartin/system-design-primer#application-caching) \ No newline at end of file diff --git a/src/roadmaps/system-design/content/112-caching/index.md b/src/roadmaps/system-design/content/112-caching/index.md index 07f88797a..c8695f1e4 100644 --- a/src/roadmaps/system-design/content/112-caching/index.md +++ b/src/roadmaps/system-design/content/112-caching/index.md @@ -1 +1,25 @@ -# Caching \ No newline at end of file +# Caching + +Caching improves page load times and can reduce the load on your servers and databases. In this model, the dispatcher will first lookup if the request has been made before and try to find the previous result to return, in order to save the actual execution. + +Databases often benefit from a uniform distribution of reads and writes across its partitions. Popular items can skew the distribution, causing bottlenecks. Putting a cache in front of a database can help absorb uneven loads and spikes in traffic. + +## Client caching +Caches can be located on the client side (OS or browser), server side, or in a distinct cache layer. + +## CDN caching +CDNs are considered a type of cache. + +## Web server caching +Reverse proxies and caches such as Varnish can serve static and dynamic content directly. Web servers can also cache requests, returning responses without having to contact application servers. + +## Database caching +Your database usually includes some level of caching in a default configuration, optimized for a generic use case. Tweaking these settings for specific usage patterns can further boost performance. + +## Application caching +In-memory caches such as Memcached and Redis are key-value stores between your application and your data storage. Since the data is held in RAM, it is much faster than typical databases where data is stored on disk. RAM is more limited than disk, so cache invalidation algorithms such as least recently used (LRU) can help invalidate 'cold' entries and keep 'hot' data in RAM. + +To learn more, visit the following links: + +- [Getting started with Cache](https://github.com/donnemartin/system-design-primer#cache) +- [From cache to in-memory data grid](https://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast) \ No newline at end of file