账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    spa 应用的路由是否应该做缓存?
    • 2018-08-17 00:00
    • 10
    43
    0

    问题描述

    在react 应用中,react-router 组件只会保存一个页面(即进入新的路由后,旧路由的页面就会被销毁),与 app 或者 小程序的路由相差较大。现在问题是,在移动端,返回上一个页面是常见操作,怎么保证能还原上一个页面的状态?
    个人了解的方法:

    1. 用状态管理把页面的状态都缓存起来
    2. 有一些第三方 router 组件做了特殊处理,它在进入下一个路由时,不会销毁旧路由,而是把页面组件用 css 隐藏起来,虽然简单粗暴,但这种方法有缺点:

      1. 旧页面和新页面会互相影响,例如旧页面在播放视频,那么进入新页面时就得手动关闭视频先。
      2. 滚动位置的保存。如果依赖于缓存页面的话,那么每个页面就得都用局部滚动来处理。但是局部滚动和body滚动相比,感觉还是有点不流畅。而且现在微信ios上,网页下面还多了个导航栏,如果用局部滚动,那么这个导航栏是消失不了的。
      3. 因为旧页面被缓存起来了,那么返回的时候会导致生命周期(componentDidMount, componentWillMount)不会触发。
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 我家g港有船 普通会员 1楼

      spa 应用的路由是否应该做缓存,这主要取决于spa 应用的特性和使用场景。以下是一些可能需要考虑的因素:

      1. 高访问量:如果spa 应用经常有大量的请求,或者这些请求来自于同一个地理位置,那么缓存可能会有所帮助。这样可以减少数据库查询的次数,提高性能。

      2. 长期访问:如果spa 应用需要长期访问某些数据,那么缓存可能会更有用。例如,可以将用户信息缓存到数据库中,以便在下次请求时可以直接从数据库中获取。

      3. 缓存过期时间:spa 应用可以设置缓存的过期时间,这样当缓存中的数据过期时,需要从数据库中重新获取。

      4. 缓存策略:spa 应用可以使用不同的缓存策略,例如键值缓存、文件缓存等。不同的缓存策略有不同的优缺点,需要根据spa 应用的具体情况选择。

      总的来说,是否应该做缓存,需要根据spa 应用的具体特性和使用场景来决定。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部