缓存 VS 会话 VS cookie?

2024-04-13

缓存、会话、Cookie 的注意事项是什么?

例如:
我经常使用会话变量,有时当用户开始订购产品然后去吃午餐并在几个小时后回来并继续预订时,预订应用程序中有时会出现问题。我将预订存储在会话中,直到用户确认或中止预订,因此当用户只需单击浏览器中的 X 并且不再返回时,我不需要与数据库通信并处理数据库中的中途预订。

我应该使用缓存或 cookie 或某种组合来实现此目的吗?

(此外,当应用程序中出现一些错误时,会话对象会自行重置,因此我会遇到更多问题)

我主要从事桌面编程,感觉我在这里缺乏很多知识,因此任何可以扩展在何处使用缓存、会话、Cookie(或数据库)的人将不胜感激

Edit:从答案来看,DB和cookie的组合似乎是我想要的。

  1. 我必须将预订存储在连接到会话 ID 的数据库中
  2. 将会话 ID 存储在 cookie 中(加密)。
  3. 每个页面加载时都会检查 cookie 并从数据库中获取预订
  4. 我有一个每周运行一次的清理程序,以清除未完成的预订。

我无法将预订存储为 cookie,因为用户可以更改价格和其他敏感数据,而我必须验证所有内容(不能信任数据)。

我做对了吗?

感谢大家的精彩解释!


从桌面应用程序的角度来看,状态管理是进入 Web 世界时需要掌握的关键内容。

  • Session用于存储per-user当前 Web 会话的信息server。它支持使用数据库服务器作为后端存储。
  • Cookie应该用来存储per-user当前 Web 会话的信息或执着的有关的信息client,因此客户端可以控制 cookie 的内容。
  • Cache对象是在单个应用程序中的用户之间共享。其主要目的是缓存数据存储中的数据,不应用作主存储。它支持自动失效特征。
  • Application对象在用户之间共享来存储应用范围状态并应相应使用。

如果您的应用程序被许多未经身份验证的用户使用,我建议您将数据存储在 cookie 中。如果需要身份验证,您可以手动将数据存储在数据库中或使用 ASP.NET 配置文件管理功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

缓存 VS 会话 VS cookie? 的相关文章

随机推荐

  • 在 Java 中设置 BufferedImage alpha 掩码

    我有两个从 png 加载的 BufferedImage 第一个包含图像 第二个包含图像的 alpha 蒙版 我想通过应用 alpha 蒙版从这两个图像创建一个组合图像 我的谷歌搜索失败了 我知道如何加载 保存图像 我只需要从两个 Buffe
  • 允许 cPanel 管理 SetEnv 参数

    我们有一个应用程序 它使用 Apache 环境参数来确定它应该使用什么配置 该应用程序的大约 5 个实例托管在一台 cPanel WHM 开发服务器上 我们可以使用 htaccess设置正确的环境 但这会导致未提交的更改 cPanel 应通
  • 是否有关于 HTML 资源包的建议?

    是否有 HTML 资源包的提案 RFC 或者已经有一个标准而我错过了机会 资源束的概念很好地适用于PDF Java 的JAR 闪光的SWF 安卓的APK ETC 看来 WWW 在这里落后了 这是我的非正式建议 允许捆绑所有页面 特定资源 i
  • mysql 假选择

    我的目的是 从值列表中获取多行 例如 1 2 3 4 5 a b c anything 等 mysql gt select id from accounts where id in 1 2 3 4 5 6 id 1 2 3 5 6 5 ro
  • 使用特定网络接口执行请求

    是否可以使用特定的网络接口在 NodeJS 中执行 GET POST 请求 IE 使用 CURL 我可以调用两个 POST 调用 例如 curl X POST interface wlan0 http 192 168 1 5 resourc
  • 新改版(2015 年 9 月)iTunes connect UI 中 iOS 应用程序客户评论部分在哪里

    很抱歉这个明显愚蠢的问题 但是有谁能够找到新改版 2015 年 9 月 的 iTunes connect UI 中客户评论部分已移至何处 在之前的界面迭代中 当您在 iTunes connect 中选择应用程序时 会有一个 评论 选项卡 但
  • YouTube Iframe API - OnStateChange 突然不起作用[重复]

    这个问题在这里已经有答案了 直到美国东部标准时间下午 6 点左右 下面的代码都可以正常工作 但现在由于某种原因 onStateChange 没有触发 我尝试过多种浏览器 并让朋友检查过 看到什么明显错误了吗 div div div div
  • e.preventDefault 阻止点击

    我有以下代码来测试 e preventDefault 的工作原理 我认为这会阻止点击事件的发生 document ready function button click function e e preventDefault alert b
  • 运行 Terraform Plan/Apply 时出现 InvalidClientTokenID 错误

    我正在使用 Terraform 和用户数据在 AWS 中设置 HA 集群 我的 main tf 看起来像这样 provider aws access key access key secret key secret key resource
  • Node.js 抓取工具中的内存泄漏

    这是一个用 JavaScript 和 Node js 编写的简单抓取工具 用于抓取 Wikipedia 中的元素周期表元素数据 依赖项是jsdom https github com tmpvar jsdom用于 DOM 操作和链帮 http
  • jsPlumb 新连接处理程序:如何获取端点锚点位置?

    是的 所以我一直在玩 jsPlumb 假设我有一个有两个端点的 div 一个顶部中心 一个底部中心 创建新连接时 我可以使用下面的函数绑定到该事件 我的问题是 如何获得端点的锚位置 我确实获得了 Source 和 TargetEndpoin
  • 即使导出路径也找不到 conda 命令

    我将 anaconda3 安装到我的主目录中 这是我在终端中看到的 我的 bash profile 看起来像这样 导出 PATH Users spotter anaconda3 bin PATH 所以我不明白为什么 conda 不被识别 当
  • 从单个表中选择同一列两次但条件不同

    我想显示员工的姓名和号码以及老板的号码和姓名 如下所示 只有一张表 到目前为止我尝试过 SELECT ID Name Boss SELECT Name FROM Employees WHERE ID IN SELECT Boss FROM
  • 使用 pip 安装后找不到 cookiecutter 命令

    我想使用 cookiecutter 启动 django 项目 但由于某种原因找不到 cookiecutter 我所做的是 pip install cookiecutter 在那之后 cookiecutter https github com
  • C++ 支持编译时计数器吗?

    出于自省的目的 有时我想自动将序列号分配给类型或类似的东西 不幸的是 模板元编程本质上是一种函数式语言 因此缺乏实现此类计数器的全局变量或可修改状态 或者确实如此 根据请求的示例代码 include
  • 进度条的可见性

    当用户在一项活动中单击按钮时 我需要处理一些数据 因此屏幕看起来应用程序停止了 2 3 秒 这不是很多 但我想向用户提供一切正常的信息 IMO 最好的方法是进度条 仅在处理数据时才可见 我找到了ProgressBar的代码 它看起来像这样
  • 如何更改类内的变量?在Python中

    我已经开始编写一个空闲游戏的代码 但稍后我会添加某种类型的输入 我的问题是我的class库存不增加int s from def砍 我的到我的variable SP wood SP stone 它只是替换variable与它得到的号码def砍
  • 从 F# 调用 C# 异步方法会导致死锁

    我有一组 F 脚本 它们调用我们创建的各种库 其中许多库公开了最初用 C 编写的异步方法 最近我发现脚本停止工作了 我想距离我上次使用它们已经有半年了 当时它们还可以工作 我试图隔离问题并提出了以下代码来重现它 首先 我们考虑一个包含以下
  • 如何在 Pandas 数据框的多列上运行 Ta-Lib?

    我有一个数据框 其中包含多种证券的价格作为列 但我找不到一次性运行 TA Lib 的解决方案 因为它需要 numpy ndarray 如何在多种证券上运行 TA Lib 并获得数据帧作为回报 import talib as ta d sec
  • 缓存 VS 会话 VS cookie?

    缓存 会话 Cookie 的注意事项是什么 例如 我经常使用会话变量 有时当用户开始订购产品然后去吃午餐并在几个小时后回来并继续预订时 预订应用程序中有时会出现问题 我将预订存储在会话中 直到用户确认或中止预订 因此当用户只需单击浏览器中的