Skip to content

Commit 150016b

Browse files
committed
2 parents 0760cd8 + 38bc0df commit 150016b

File tree

4 files changed

+44
-43
lines changed

4 files changed

+44
-43
lines changed

Diff for: en/SUMMARY.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
- [Configuration de pré-compilation](build-config.md)
99
- [Gestion des CSS](css.md)
1010
- [Gestion des entêtes (En)](head.md)
11-
- [Mise en cache (En)](caching.md)
12-
- [Envoi par flux (En)](streaming.md)
11+
- [Mise en cache](caching.md)
12+
- [Envoi par flux](streaming.md)
1313
- [Référence de l'API](api.md)
1414
- [createRenderer](api.md#createrendereroptions)
1515
- [createBundleRenderer](api.md#createbundlerendererbundle-options)

Diff for: en/caching.md

+21-21
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
# Mise en cache (En) <br><br> *Cette page est en cours de traduction française. Revenez une autre fois pour lire une traduction achevée ou [participez à la traduction française ici](https://github.com/vuejs-fr/vue-ssr-docs).*
1+
# Mise en cache
22

3-
Although Vue's SSR is quite fast, it can't match the performance of pure string-based templating due to the cost of creating component instances and Virtual DOM nodes. In cases where SSR performance is critical, wisely leveraging caching strategies can greatly improve response time and reduce server load.
3+
Même si le SSR de Vue est très rapide, il ne peut égaler les performances d'un rendu utilisant une chaîne de caractères pure du fait du coût de la création des instances de composants et des nœuds du DOM virtuel. Dans le cas ou les performances du SSR seraient critiques, il est conseillé d'utiliser une stratégie de mise en cache pour améliorer significativement le temps de réponse et réduire la charge du serveur.
44

5-
## Page-level Caching
5+
## Mise en cache au niveau de la page
66

7-
A server-rendered app in most cases relies on external data, so the content is dynamic by nature and cannot be cached for extended periods. However, if the content is not user-specific (i.e. for the same URL it always renders the same content for all users), we can leverage a strategy called [micro-caching](https://www.nginx.com/blog/benefits-of-microcaching-nginx/) to drastically improve our app's capability of handling high traffic.
7+
Une application de rendu côté serveur est, dans la plupart des cas, liée à des données externes. Donc le contenu est dynamique par nature et ne peut pas être mis en cache pour des périodes étendues. Cependant, si le contenu n'est pas spécifique à un utilisateur (c.-à-d. qu'un même URL rend toujours un même contenu indépendamment des utilisateurs), nous pouvons mettre en place une stratégie appelée [micro-caching](https://www.nginx.com/blog/benefits-of-microcaching-nginx/) pour améliorer significativement la capacité de notre application à prendre en charge un fort trafique.
88

9-
This is usually done at the Nginx layer, but we can also implement it in Node.js:
9+
Ceci est habituellement fait au niveau de la couche nginx, mais nous pouvons également l'implémenter en Node.js :
1010

1111
``` js
1212
const microCache = LRU({
1313
max: 100,
14-
maxAge: 1000 // Important: entries expires after 1 second.
14+
maxAge: 1000 // Important : les entrées expires après une seconde.
1515
})
1616

1717
const isCacheable = req => {
18-
// implement logic to check if the request is user-specific.
19-
// only non-user-specific pages are cache-able
18+
// implémentation d'un algorithme pour définir si une requête est spécifique à un utilisateur.
19+
// seules les pages non spécifiques à un utilisateur peuvent être mises en cache
2020
}
2121

2222
server.get('*', (req, res) => {
@@ -37,11 +37,11 @@ server.get('*', (req, res) => {
3737
})
3838
```
3939

40-
Since the content is cached for only one second, users will not see outdated content. However, this means the server only has to perform at most one full render per second for each cached page.
40+
Parce que le composant est mis en cache pour seulement une seconde, les utilisateurs ne verront pas le contenu déjà périmé. Cependant, cela signifie que le serveur a besoin de faire un rendu complet une seule fois par seconde pour chaque page mise en cache.
4141

42-
## Component-level Caching
42+
## Mise en cache au niveau du composant
4343

44-
`vue-server-renderer` has built-in support for component-level caching. To enable it you need to provide a [cache implementation](./api.md#cache) when creating the renderer. Typical usage is passing in an [lru-cache](https://github.com/isaacs/node-lru-cache):
44+
`vue-server-renderer` a un support intégré pour la mise en cache de composant. Pour l'activer, vous avez besoin d'une [implémentation de mise en cache](./api.md#cache) quand vous créez le moteur de rendu. L'usage courant est de passer un [objet de mise en cache qui supprime l'objet le plus récemment utilisé](https://github.com/isaacs/node-lru-cache) :
4545

4646
``` js
4747
const LRU = require('lru-cache')
@@ -54,11 +54,11 @@ const renderer = createRenderer({
5454
})
5555
```
5656

57-
You can then cache a component by implementing a `serverCacheKey` function:
57+
Vous pouvez aussi implémenter une mise en cache de composant avec une fonction `serverCacheKey` :
5858

5959
``` js
6060
export default {
61-
name: 'item', // required
61+
name: 'item', // requis
6262
props: ['item'],
6363
serverCacheKey: props => props.item.id,
6464
render (h) {
@@ -67,20 +67,20 @@ export default {
6767
}
6868
```
6969

70-
Note that cache-able component **must also define a unique "name" option**. With a unique name, the cache key is thus per-component: you don't need to worry about two components returning the same key.
70+
Notez que ce composant pouvant être mis en cache **doit aussi définir une option `name` unique**. Avec un nom unique, la clé de mise en cache est effective par composant : vous n'avez donc pas besoin de vous préoccuper de deux composants qui retourneraient la même clé.
7171

72-
The key returned from `serverCacheKey` should contain sufficient information to represent the shape of the render result. The above is a good implementation if the render result is solely determined by `props.item.id`. However, if the item with the same id may change over time, or if render result also relies on another prop, then you need to modify your `getCacheKey` implementation to take those other variables into account.
72+
La clé retournée par `serverCacheKey` devrait contenir suffisamment d'informations pour représenter tous les résultats de rendu. L'exemple ci-dessus est une bonne implémentation si le résultat du rendu est uniquement déterminé par `props.item.id`. Cependant, si un élément avec le même identifiant change à chaque fois, ou si son rendu est lié au changement d'une autre prop, alors vous devez modifier votre implémentation `getCacheKey` pour prendre en compte ces variables.
7373

74-
Returning a constant will cause the component to always be cached, which is good for purely static components.
74+
Retourner une constante va mener le composant à toujours être en cache, ce qui peut être une bonne chose pour les composants statiques.
7575

76-
### When to use component caching
76+
### Quand utiliser de la mise en cache de composant ?
7777

78-
If the renderer hits a cache for a component during render, it will directly reuse the cached result for the entire sub tree. This means you should **NOT** cache a component when:
78+
Si le moteur de rendu trouve du cache pour un composant durant le rendu, il va directement utiliser ce cache comme résultat pour le sous arbre de composant complet. Cela signifie qu'il ne faut **PAS** mettre en cache un composant quand :
7979

80-
- It has child components that may rely on global state.
81-
- It has child components that produces side effects on the render `context`.
80+
- Il possède des composants enfants liés à l'état global.
81+
- Il possède des composants enfants qui produisent des effets de bord sur le rendu de `context`.
8282

83-
Component caching should therefore be applied carefully to address performance bottlenecks. In most cases, you shouldn't and don't need to cache single-instance components. The most common type of components that are suitable for caching are ones repeated in big `v-for` lists. Since these components are usually driven by objects in database collections, they can make use of a simple caching strategy: generate their cache keys using their unique id plus the last updated timestamp:
83+
La mise en cache de composant doit donc être utilisée avec soin pour éviter les goulots d'étranglement de performance. Dans la plupart des cas, vous n'en aurez pas besoin et donc pas besoin de mettre en cache les instances de composants. Les types de composants les plus communs pour de la mise en cache sont ceux utilisant de grosses listes `v-for`. Comme ces composants sont généralement alimentés par des collections de base de données, ils peuvent utiliser une simple stratégie de mise en cache : générer leur clé de mise en cache en utilisant leur unique identifiant associé à un timestamp mis à jour :
8484

8585
``` js
8686
serverCacheKey: props => props.item.id + '::' + props.item.last_updated

Diff for: en/head.md

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
# Gestion des entêtes (En) <br><br> *Cette page est en cours de traduction française. Revenez une autre fois pour lire une traduction achevée ou [participez à la traduction française ici](https://github.com/vuejs-fr/vue-ssr-docs).*
1+
# Gestion des entêtes
22

3-
Similar to asset injection, head management follows the same idea: we can dynamically attach data to the render `context` in a component's lifecycle, and then interpolate those data in `template`.
3+
Similaire à l'injection de fichier, la gestion des entêtes suit la même idée : nous pouvons dynamiquement attacher des données au rendu `context` dans le cycle de vie du composant, et interpoler ses données dans le template.
44

5-
> In version >=2.3.2, you can directly access the SSR context in a component as `this.$ssrContext`. In older versions you'd have to manually inject the SSR context by passing it to `createApp()` and expose it on the root instance's `$options` - child components can then access it via `this.$root.$options.ssrContext`.
5+
> Dans la version 2.3.2+, vous pouvez directement accéder au contexte SSR du composant via `this.$ssrContext`. Dans les versions plus anciennes, vous devez injecter manuellement le contexte SSR en le passant à la fonction `createApp()` et ainsi l'exposer dans `$options` de l'instance racine — les composants enfants pouvant y accéder via `this.$root.$options.ssrContext`.
66
7-
We can write a simple mixin to perform title management:
7+
Nous pouvons écrire un mixin simple pour effectuer la gestion du titre :
88

99
``` js
1010
// title-mixin.js
1111

1212
function getTitle (vm) {
13-
// components can simply provide a `title` option
14-
// which can be either a string or a function
13+
// les composants doivent simplement fournir une option `title`
14+
// pouvant être soit une chaîne de caractères soit une fonction
1515
const { title } = vm.$options
1616
if (title) {
1717
return typeof title === 'function'
@@ -38,13 +38,13 @@ const clientTitleMixin = {
3838
}
3939
}
4040

41-
// VUE_ENV can be injected with webpack.DefinePlugin
41+
// `VUE_ENV` peut être injecté avec `webpack.DefinePlugin`
4242
export default process.env.VUE_ENV === 'server'
4343
? serverTitleMixin
4444
: clientTitleMixin
4545
```
4646

47-
Now, a route component can make use of this to control the document title:
47+
Maintenant, un composant de route peut être utilisé ainsi pour contrôler le titre du document :
4848

4949
``` js
5050
// Item.vue
@@ -66,7 +66,7 @@ export default {
6666
}
6767
```
6868

69-
And inside the `template` passed to bundle renderer:
69+
Et passé au moteur de rendu de paquetage dans le template.
7070

7171
``` html
7272
<html>
@@ -79,12 +79,12 @@ And inside the `template` passed to bundle renderer:
7979
</html>
8080
```
8181

82-
**Notes:**
82+
**Notes :**
8383

84-
- Use double-mustache (HTML-escaped interpolation) to avoid XSS attacks.
84+
- Utilisez les doubles moustaches (interpolation de HTML échapé) pour éviter les attaques XSS.
8585

86-
- You should provide a default title when creating the `context` object in case no component has set a title during render.
86+
- Vous devriez fournir un titre par défaut quand vous créez l'object `context` au cas ou aucun composant de définisse de titre durant le rendu.
8787

8888
---
8989

90-
Using the same strategy, you can easily expand this mixin into a generic head management utility.
90+
En utilisant la même stratégie, vous pouvez facilement étendre votre mixin en une fonction utilitaire générique de gestion des entêtes.

Diff for: en/streaming.md

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
# Envoi par flux (En) <br><br> *Cette page est en cours de traduction française. Revenez une autre fois pour lire une traduction achevée ou [participez à la traduction française ici](https://github.com/vuejs-fr/vue-ssr-docs).*
1+
# Envoi par flux
22

3-
`vue-server-renderer` supports stream rendering out of the box, for both the base renderer and the bundle renderer. All you need to do is use `renderToStream` instead of `renderToString`:
3+
`vue-server-renderer` supporte nativement le rendu par flux (« stream »), aussi bien pour le moteur de rendu de base que pour le moteur de rendu de paquetage. Tout ce dont vous avez besoin est d'utiliser `renderToStream` à la place de `renderToString` :
4+
:
45

56
``` js
67
const stream = renderer.renderToStream(context)
78
```
89

9-
The returned value is a [Node.js stream](https://nodejs.org/api/stream.html):
10+
La valeur retournée est un [flux Node.js](https://nodejs.org/api/stream.html) :
1011

1112
``` js
1213
let html = ''
@@ -24,10 +25,10 @@ stream.on('error', err => {
2425
})
2526
```
2627

27-
## Streaming Caveats
28+
## Limitations de flux
2829

29-
In stream rendering mode, data is emitted as soon as possible when the renderer traverses the Virtual DOM tree. This means we can get an earlier "first chunk" and start sending it to the client faster.
30+
En mode de rendu par flux, la donnée est émise aussitôt que possible quand le moteur parcourt l'arbre du DOM virtuel. Cela signifie que l'envoi au client du « premier fragment » commence rapidement.
3031

31-
However, when the first data chunk is emitted, the child components may not even be instantiated yet, neither will their lifecycle hooks get called. This means if the child components need to attach data to the render context in their lifecycle hooks, these data will not be available when the stream starts. Since a lot of the context information (like head information or inlined critical CSS) needs to be appear before the application markup, we essentially have to wait until the stream to complete before we can start making use of these context data.
32+
Cependant, quand le premier fragment est émis, les composants enfants peuvent ne pas avoir encore été instanciés, et les hooks de leur cycle de vie ne seront jamais appelés. Cela signifie que si des composants enfants ont besoin d'attacher leurs données dans le contexte de rendu de leurs hooks de cycle de vie, elles ne seront pas accessibles au démarrage du flux. Comme beaucoup d'informations (comme les informations d'entête ou les CSS critiques injectées) ont besoin d'être insérées avant la balise de l'application, il est nécessaire d'attendre la fin du flux avant de commencer à utiliser ces données de contexte.
3233

33-
It is therefore **NOT** recommended to use streaming mode if you rely on context data populated by component lifecycle hooks.
34+
Il n'est donc **PAS** recommandé d'utiliser de l'envoi par flux si les données de vos contextes sont injectés dans les hooks du cycle de vie.

0 commit comments

Comments
 (0)