SvelteKit create-svelte示例todos功能的任务数据存储位置疑问
SvelteKit默认示例todos数据存储逻辑解答
你的待办任务数据实际临时存储在本地运行的SvelteKit开发服务端的运行内存中,并不在浏览器侧存储,你之前的排查方向出现了偏差。
完整逻辑说明
- 默认模板的
todos.json是服务端处理的接口,所有新增、删除待办的操作请求,都会由本地启动的SvelteKit服务端处理,对应的数据会按用户维度保存在服务端的内存里。 - 你观测到的
HttpOnly类型的useridCookie是用户身份的唯一标识:HttpOnly属性决定了前端JS无法读写这个Cookie,每次你向todos.json发起请求时,浏览器会自动携带这个Cookie,服务端会根据Cookie里的userid值,返回内存中对应该用户的待办列表。
对应观测现象的解释
- 关闭浏览器标签重新打开数据仍存在:本地SvelteKit服务没有停止,内存中的数据没有被清空,且你浏览器的userid Cookie还在,请求时服务端可以匹配到之前存储的待办数据。
- 同设备其他浏览器看不到数据:不同浏览器的Cookie不互通,其他浏览器访问时会被分配新的userid,服务端内存中对应该新id的待办列表为空。
- 清空缓存并硬性重新加载后数据仍保留:你清理的只是浏览器侧的静态资源缓存,既没有清除userid Cookie,也没有停止服务端清空内存数据,请求时依然能匹配到原有数据。
- 修改/删除userid Cookie后数据消失:服务端无法匹配到原有的userid,会给你分配新的userid,对应新的空待办列表。
补充说明:这个存储逻辑只是默认示例的极简演示方案,仅用于开发环境演示,服务重启后所有内存中的数据都会清空,生产环境不会采用这种临时存储方案。
内容的提问来源于stack exchange,提问作者zipzit
相关产品推荐
相关产品推荐

