0

在过去的几个月里,我一直将 Ajax 用于纯粹的 UX 目的,即允许用户提交表单、访问内容等,而无需重新加载或离开页面。但是,在阅读了一篇关于使用Node.js的好处的文章之后,我开始更多地思考我的应用程序是否可以从向服务器提交微请求而不是例如一次从巨大的表单中提交数据中受益.

现在,我的应用程序的工作方式是我的 DomainObjects 直接映射到我的数据库表和视图层中的表单。所以,例如,

class Demographics extends DomainObject {

    protected $first;
    protected $last;
    protected $middle;
    protected $ssn;

    // getter, setter methods


}

将有一个表单,其中包含所有可设置属性的输入,供用户更新。因此,到目前为止,我们有一个 Demographics 对象,它在我的数据库中保存了一个人的信息。好吧,目前,当用户更新此人的信息时,会使用页面中的数据重新创建Demographics 对象(我将 customerID 隐藏在 HTML 中并使用它重新实例化该对象),但现在我想知道如果这是 1. 必要的和 2. 好的做法。

所以,我的主要问题是:如果我决定通过 Ajax 提交微请求,我是否真的需要重新实例化对象,或者是否有某种“线程”让我的 PHP 在请求之间保持活动状态?(即,以前实例化的对象是否可访问?)。

此外,这种重新创建 DomainObject 并在 HTML 常见做法中隐藏行 ID 的做法,还是应该避免这种做法?

4

2 回答 2

3

每个请求周期都是它自己的线程,这是它应该的。您不希望多个不同的用户共享相同的数据。这看起来是应该存储在数据库中并在每次请求时检索的数据的完美示例。但是,否则您的微 Ajax 请求方法听起来是个好主意;每个请求都可以与数据库中的不同表以及可能完全不同的 URL 进行通信,并且每次都会在数据库中存储和重新创建进度。

至于您的第二个问题,我需要查看一些代码才能知道您要完成的工作。

于 2012-06-29T00:17:41.977 回答
1

数据必须以某种方式手动保存。不应依赖处理后续请求的同一线程/进程,除非特定框架是围绕此类保证专门设计的,并且可以确保它们不被违反。

究竟如何持久化/恢复数据……取决于你和你的要求;-)

  1. 查看状态;通过回发数据维护状态。这本身并没有什么问题(它是 ASP.NET 中 ViewState 的基础),但是维护的状态越大,必须来回传输的数据就越多(几 KB 不算什么,几 MB 是……未调用为了)。如果使用,请考虑防篡改解决方案。页面驱动数据处理时效果很好。
  2. 数据库; 例如 MySQL。持久化数据的好方法。然而,并非所有数据都需要这种持久性。它通常易于设置和维护。
  3. 缓存;例如。内存缓存。不是 RDMB。但是一种存储数据的好方法“它会很高兴”。通常位于数据库支持的数据“前面”。
  4. 饼干; 通常与上述一种或多种结合使用以“关联”不同的连接。有时,存储/传递额外的瞬态数据是一种可行的方法。
  5. 会话状态;通常使用#2 或#3(并利用#4)。与 View State 的区别在于它“仅在服务器上”。
  6. 序列化;可用于脱水/再水化对象而无需手动构建。使用上述方法之一,让生活更简单。

快乐编码。

于 2012-06-29T00:26:36.037 回答