【发布时间】:2020-04-24 16:10:21
【问题描述】:
有一个网站,前面是ReactJS写的。为了CEO的正确操作,使用了SSR。 算法是这样的:
1 页加载
- 浏览器打开/foo;
- SSR 检查是否在缓存中 /foo 没有找到;
- SSR 在服务器上呈现并根据请求/foo 执行 react 应用程序;
- SSR 放入缓存 HTML,结果是渲染过程 / foo 的结果;
- SSR 给浏览器一个 HTMLL,它是渲染过程 / foo 的结果;
- 浏览器执行异步请求,都是HTML,是/foo渲染的结果(CSS、JS、favicon ...);
- 加载的应用程序反应“知道页面已经被绘制并且不需要执行路由等”;
- react 处理用户的进一步操作(如在常规 SPA 中)。
后续更新
- 浏览器打开/foo;
- SSR 检查是否在缓存中 /foo 没有找到;
- SSR 在服务器上呈现并根据请求/foo 执行 react 应用程序;
- SSR 放入缓存 HTML,结果是渲染过程 / foo 的结果;
- 给浏览器一个 HTMLL,它是渲染过程 / foo 的结果;
- 浏览器执行异步请求,都是HTML,是/foo渲染的结果(CSS、JS、favicon ...);
- 加载的应用程序反应“知道页面已经被绘制并且不需要执行路由等”;
react 处理用户的进一步操作(如在常规 SPA 中)。 问题就在前面,每次刷新页面时,都会启动路由,重新绘制整个应用程序,从而出现“闪烁”,即第7点不起作用。
问题:是否可以在某个时刻停止此渲染?告诉路线现在不需要绘制它。也许有什么流行的解决方案?
【问题讨论】:
标签: javascript reactjs server-side-rendering react-ssr