From 9f5420c86f639d04f1d7e1f27bac21e2c2f7f590 Mon Sep 17 00:00:00 2001 From: dheesbeen Date: Fri, 31 Jan 2020 12:37:59 +0100 Subject: [PATCH 1/3] [DOCS] Updated readme with diagram --- README.md | 28 +++++++++++++++++++++++++++- assets/diagram.png | Bin 0 -> 19184 bytes 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 assets/diagram.png diff --git a/README.md b/README.md index 1a952e0..3f77bb9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ ![logo](https://github.com/experius/SeoSnap/raw/master/assets/logo.png) +#SeoSnap Beta + Setup for the whole seosnap stack including dashboard, cache server and cache warmer used for prerendering and full page caching PWA's. @@ -13,6 +15,12 @@ git clone --recursive git@github.com:experius/SeoSnap.git ``` docker-compose up --build -d && docker-compose down ``` +Wait 5 seconds and then build again +``` +docker-compose up --build +``` + +Everythins should run now # Usage * Dashboard: http://127.0.0.1:8080/ (default login: snaptron/Sn@ptron1337) @@ -28,4 +36,22 @@ Cache directory ./cache Make sure you have created a website via dashboard http://127.0.0.1:8080/seosnap/website/add/ ``` docker-compose run cachewarmer -``` \ No newline at end of file +``` + +## Nginx + +Check the nginx.conf in the example folder + + +# How it works + +![diagram](https://github.com/experius/SeoSnap/raw/master/assets/diagram.png) + +### Dashboard +In the dashboard you add the website url along with the website sitemap that you want to make 'SeoSnaps' off. + +### Crawler +When the crawler is started it connects with the dashboard api. It uses scrapy to crawl the sitemap. The scrapy results are send to the administration/dashboard. Scrapy requests are send to the cache server. In a similar way that you would do a request to rendertron. + +### Cache Server +The cache server is a simple file caching server. If a file exist with the content of the page it serves the html from the file. If not, it renders the requested url with rendertron and saves the html output in a file. To refresh the cache the cache-warmer uses PUT requests instead of GET. This will force update from the cache file. \ No newline at end of file diff --git a/assets/diagram.png b/assets/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..49ff613114a9c8f8a4137b34b2d12377f52296a9 GIT binary patch literal 19184 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 DHsQBM literal 0 HcmV?d00001 From 85738318d90f5b236cebe556657ea7ef6b679d86 Mon Sep 17 00:00:00 2001 From: dheesbeen Date: Fri, 31 Jan 2020 12:49:42 +0100 Subject: [PATCH 2/3] [DOCS] Updated readme added software logos --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3f77bb9..6b6764e 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Wait 5 seconds and then build again docker-compose up --build ``` -Everythins should run now +Everything should run now # Usage * Dashboard: http://127.0.0.1:8080/ (default login: snaptron/Sn@ptron1337) @@ -54,4 +54,7 @@ In the dashboard you add the website url along with the website sitemap that you When the crawler is started it connects with the dashboard api. It uses scrapy to crawl the sitemap. The scrapy results are send to the administration/dashboard. Scrapy requests are send to the cache server. In a similar way that you would do a request to rendertron. ### Cache Server -The cache server is a simple file caching server. If a file exist with the content of the page it serves the html from the file. If not, it renders the requested url with rendertron and saves the html output in a file. To refresh the cache the cache-warmer uses PUT requests instead of GET. This will force update from the cache file. \ No newline at end of file +The cache server is a simple file caching server. If a file exist with the content of the page it serves the html from the file. If not, it renders the requested url with rendertron and saves the html output in a file. To refresh the cache the cache-warmer uses PUT requests instead of GET. This will force update from the cache file. + +# Build with +![diagram](https://github.com/experius/SeoSnap/raw/master/assets/software.png) \ No newline at end of file From fbc9e49fae4827d2cf0df02469d392a3e3927151 Mon Sep 17 00:00:00 2001 From: dheesbeen Date: Fri, 31 Jan 2020 12:50:34 +0100 Subject: [PATCH 3/3] [DOCS] Updated readme added software logos --- assets/software.png | Bin 0 -> 41835 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/software.png diff --git a/assets/software.png b/assets/software.png new file mode 100644 index 0000000000000000000000000000000000000000..9f36fd71f0b5fd6f14f7cabae23590ae4999ce86 GIT binary patch literal 41835 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 iV*lM4{!a#Ta5lT$Dn@r_hUWtC_gL9`vvP literal 0 HcmV?d00001