位置: 编程技术 - 正文

浅谈Vue SSR 的 Cookies 问题(ssm vue)

编辑:rootadmin

推荐整理分享浅谈Vue SSR 的 Cookies 问题(ssm vue),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3 ssr,vuejs ssr,vue的ssr是什么,vue ssr cdn,vue ssr seo,vue的ssr是什么,vue的ssr是什么,vue的ssr是什么,内容如对您有帮助,希望把文章链接给更多的朋友!

一个网站一旦涉及到多用户, 就很难从 Cookies 中逃脱, Vue SSR 的 cookies 也真算是遇到的一个不小的问题, 从开始玩 SSR 开始到现在, 一共想出了3种方案, 从最早的把 Cookies 注入到 state 中, 到把 Cookies 注入到 global, 到现在的将 Cookies 注入到组件的 asyncData 方法.

随着 Vue 的升级, 第一种方案已经不再适用, 第二种也有不少的限制, 于是想到第三种方案, 下来就说说具体实现的方法:

第一种方案

第一种方案已经不再适用, 这里不再细说

第二种方案

思路: 将 cookies 注入到 ssr 的 context里, 然后在请求 api 时读取, 再追加到 axios 的header 里

1, 首先在 server.js 里将 cookies 加到 context里

之后, Vue 会把 context 加到 global.__VUE_SSR_CONTEXT__

2, 在 api.js 里读取 cookies

为什么可以这么做&#;

默认情况下,Vue 对于每次渲染,bundle renderer 将创建一个新的 V8 上下文并重新执行整个 bundle。应用程序代码与服务器进程隔离, 所以每个访问的用户上下文都是独立的, 不会互相影响.

但是从Vue@2.3.0开始, 在createBundleRenderer方法的选项中, 添加了runInNewContext选项, 使用 runInNewContext: false,bundle 代码将与服务器进程在同一个 global 上下文中运行,所以我们不能再将 cookies 放在 global, 因为这会让所有用户共用同一个 cookies.

为什么现在不这么做&#;

那我们继续将runInNewContext设置成true, 不就好了吗&#; 当然也是可以的, 但是重新创建上下文并执行整个 bundle 还是相当昂贵的,特别是当应用很大的时候.

浅谈Vue SSR 的 Cookies 问题(ssm vue)

以我自己的博客为例, 之前只有渲染 5 个路由组件, loadtest 的 rps, 有 左右, 但是后来把后台的 个路由组件也加到 SSR 后, rps 直接降到了个位数...

所以出现了现在的第三种方案

第三种方案

思路: 将 Cookies 作为参数注入到组件的asyncData方法, 然后用传参数的方法把 cookies 传给 api, 不得不说这种方法很麻烦, 但是这是个人能想到的比较好的方法

步骤1:

还是在 server.js 里, 把 cookies 注入到 context 中

步骤2:

在entry-server.js里, 将cookies作为参数传给 asyncData 方法

步骤3:

在组件里, 把 cookies 做为参数给 Vuex 的 actions

步骤4:

在 Vuex 里将 cookies 做为参数给 api

这里一定要注意, state 一定要用函数返回值来初始化 state, 不然会导致所有用户共用 state

步骤5:

在 api 里接收 cookies, 并加到 axios 的 headers 里

如果你没有将 axios 重新封装, 那么也可以把第五步省略, 直接在第四部把 cookies 给 axios 即可

方案 2 具体实例: 3 具体实例: 如果你项目不大, 还是直接用方案 2 吧, 项目有很多页面, 并且大部分页面是每个用户都一样的, 可以考虑方案 3, 或者你有什么更好的方法, 欢迎讨论

Vue SSR 对需要 SEO, 并且每个用户看到的内容都是一致的, 配合缓存, 将是一个非常好的体验...

标签: ssm vue

本文链接地址:https://www.jiuchutong.com/biancheng/377401.html 转载请保留说明!

上一篇:Vue 中批量下载文件并打包的示例代码(vue实现下载功能)

下一篇:AngularJS实现自定义指令及指令配置项的方法(angular script)

  • 个体工商户一直没办税务登记证
  • 税务师税法一税法二区别
  • 保税仓发货的商品,每个人的年度消费限额是
  • 增值税可以退税嘛
  • 附加税费计税依据
  • 银行理财收益算错兑付怎么办
  • 差旅费报销怎么做账
  • 境内企业借外债最新政策出台
  • 公司宣传牌模板
  • 个人到税务局怎么开增值税普通发票
  • 国税是负税需要缴税吗
  • 印花税在什么情况下需要申报
  • 最新《资源税纳税标准
  • 劳务派遣服务用简易计税方法吗
  • 补缴地价款是什么意思
  • 对公账户管理费怎么收
  • 土地出让金契税什么时候缴纳
  • 审计费可以抵扣进项吗
  • 事业单位本年度工作小结
  • 国债逆回购会跌吗
  • w10系统程序停止运行
  • 汇算清缴补交的所得税会计分录
  • c盘appdata怎么清理
  • 怎么解决笔记本电脑卡顿问题
  • win10电脑和win7电脑怎么共享文件
  • 事假扣款进什么科目
  • win11预览版选哪个
  • php require include
  • 企业预付工程车租赁费
  • 损益类账户的期末余额一般在借方还是贷方
  • laravel框架实现cms的体会
  • 鸳鸯小鸟
  • HTML+CSS+JS+Jquery+练手项目+...合集(前端学习必备,持续更新中...)
  • 物价变动的影响因素
  • 维保措施及售后服务方案
  • js怎么执行函数
  • 简述sql server
  • 增值税普通发票查询
  • mysqlreport显示Com_中change_db占用比例高的问题的解决方法
  • 报销连号发票的合理解释
  • 劳务报酬和工资薪金有什么区别
  • 个体户怎么开对公账户
  • 公司组织出国旅游很差吗
  • 成本发票未到怎么入账
  • 代理进口产品
  • 认缴款和投资款区别
  • 高速公路过路费增值税
  • 退货时的会计分录怎么做
  • 什么是交易性金融资产?交易性金融资产主要有哪些特点?
  • sqlserver2005附加数据库错误1827
  • MySQL thread_stack连接线程的优化
  • mysql跨服务器查询语句
  • 445端口 关闭
  • win2003 IIS6.0+PHP+MySQL的安?配置
  • 最简单最快乐
  • win7系统修改
  • xp系统怎么更改用户权限
  • centos内存占用进程
  • eve是什么文件
  • 帝国时代2能在win10
  • Windows RT 8.1 Update 3九月发布 届时将加入改进版锁屏
  • 如何用dos破解wifi
  • msworks.exe - msworks是什么进程 有什么用
  • apache2.4配置文件详解
  • usb转串口的接线方法
  • Win10无法获取ipv4
  • opengl画点
  • node.js报错
  • 优化了一些已知问题是什么意思安不安装
  • python利用for循环求1到100的和
  • unity点击按钮没反应
  • cocos2dx运行原理
  • android 设置背景
  • android view动画
  • android圆形按钮
  • js如何修改style
  • javascript模板
  • 浅谈Jquery中Ajax异步请求中的async参数的作用
  • 国税湖南电子税务局官网
  • 买车购置税去哪里交钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设