From 60b14e5e3f798ff4f5e1e9892332655bcc6d4845 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Tue, 2 Oct 2018 11:09:35 +0200 Subject: [PATCH] add illustration to redundancy documentation --- support/doc/redundancy.md | 8 +++++++- support/doc/user/redundancy.png | Bin 0 -> 29641 bytes support/doc/user/redundancy.xml | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 support/doc/user/redundancy.png create mode 100644 support/doc/user/redundancy.xml diff --git a/support/doc/redundancy.md b/support/doc/redundancy.md index 62c6365a9..4c7ce4c1e 100644 --- a/support/doc/redundancy.md +++ b/support/doc/redundancy.md @@ -7,6 +7,12 @@ A PeerTube instance can cache other PeerTube videos to improve bandwidth of popu The instance administrator can choose between multiple redundancy strategies (cache trending videos or recently uploaded videos etc), set their maximum size and the minimum duplication lifetime. Then, they choose the instances they want to cache in `Manage follows -> Following` admin table. +

+ +Redundancy + +

+ Videos are kept in the cache for at least `min_lifetime`, and then evicted when the cache is full. When PeerTube chooses a video to duplicate, it imports all the resolution files (to avoid consistency issues) using their magnet URI and put them in the `storage.videos` directory. @@ -43,4 +49,4 @@ See the `/api/v1/server/stats` endpoint. For example: } ] } -``` \ No newline at end of file +``` diff --git a/support/doc/user/redundancy.png b/support/doc/user/redundancy.png new file mode 100644 index 0000000000000000000000000000000000000000..0184fb78e53cb342a4e06af4ab309f6aca623397 GIT binary patch literal 29641 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 \ No newline at end of file