Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 为了利用CDN,使用html锚定标记而不是react链接是一种不好的做法吗?_Reactjs_Performance_Cdn_Server Side Rendering - Fatal编程技术网

Reactjs 为了利用CDN,使用html锚定标记而不是react链接是一种不好的做法吗?

Reactjs 为了利用CDN,使用html锚定标记而不是react链接是一种不好的做法吗?,reactjs,performance,cdn,server-side-rendering,Reactjs,Performance,Cdn,Server Side Rendering,我有一个书面的网站,我有一个CDN的缓存页面和API响应。该网站使用服务器端渲染,主要包含静态文章内容。我注意到呈现页面example.com/a服务器端(在浏览器地址栏中键入example.com/a,然后按enter键)比呈现客户端要快。主要的瓶颈似乎是基于API响应的组件呈现(响应本身需要大约100ms,并且来自CDN)。因此,我猜当页面在服务器端呈现时,HTML已经基于API响应构建,因此React只需要呈现HTML,就可以基于API响应结果构建DOM 我开始想,也许我可以使用原生htm

我有一个书面的网站,我有一个CDN的缓存页面和API响应。该网站使用服务器端渲染,主要包含静态文章内容。我注意到呈现页面
example.com/a
服务器端(在浏览器地址栏中键入
example.com/a
,然后按enter键)比呈现客户端要快。主要的瓶颈似乎是基于API响应的组件呈现(响应本身需要大约100ms,并且来自CDN)。因此,我猜当页面在服务器端呈现时,HTML已经基于API响应构建,因此React只需要呈现HTML,就可以基于API响应结果构建DOM

我开始想,也许我可以使用原生html标记链接而不是React链接,这样当用户单击此类链接时,页面就会呈现在服务器端。这将使页面呈现速度比客户端快,我认为:

import React from 'react'
import ReactDOM from 'react-dom'

const articles = [{id: '/1', title: 'Great'}, {id: '/2', title: 'Awesome'}]

function Articles() {
  return articles.map(article => {
    return <a href={article.id}>
      <div style={{ padding: 16 }}>{article.title}</div>
    </a>
  })
}

ReactDOM.render(<Articles />, document.getElementById('root'))
从“React”导入React
从“react dom”导入react dom
const articles=[{id:'/1',title:'Great'},{id:'/2',title:'Awesome'}]
功能文章(){
returnarticles.map(article=>{
返回
})
}
ReactDOM.render(,document.getElementById('root'))
然而,我没有发现其他人分享过这样的经历。此外,这似乎与React的本质相反:“通过执行domdiff只渲染必要的内容”。也就是说,如果我已经访问了页面
example.com
,并导航到页面
example.com/a
,那么网站的总体布局(页眉、页脚、根状态)已经计算完毕,因此需要呈现的网站的唯一部分是依赖于API响应的部分

话虽如此,最终服务器端呈现速度会更快,因此我想知道,作为React中的普通锚定标记,链接实现的缺点是什么?

标记将再次加载整个web应用程序和JavaScript。此外,在导航时,您可能会看到一个白色屏幕的闪光。如果最终用户没有强大的机器,你的应用程序就会滞后。即使使用next.js等的服务器端渲染,仍然会再次加载一些JavaScript。