【问题标题】:A form that is saved real-time. Practical?实时保存的表单。实际的?
【发布时间】:2012-03-07 13:05:33
【问题描述】:

我正在尝试为我的网站构建一个非常用户友好的用户界面。现在的标准是对表单使用客户端和服务器端验证。正确的?我想知道我是否可以放弃客户端验证,而只依赖服务器端。验证将在模糊时触发,并将使用 ajax。 为了向前迈出一步,我还计划在数据库中保存一个特定字段,如果它被验证为正确的话。类似于实时表单更新。

你看,我对编程完全陌生。所以我不知道这种方法是否可以实际工作。我的意思是,会有速度或连接问题吗?在高流量的情况下会对服务器造成影响吗?网站在 HTTPS 上会变慢吗? 是否有任何网站已经实现了这一点?

另外,在我看来,每个字段都需要一个单独的 PHP 脚本!有没有更短的方法?

【问题讨论】:

  • 你说的有些话没有道理。如果你是新手,你应该先尝试了解如何做简单的网站和表单,并熟悉 PHP、Ajax 等。
  • @Laurent 是的,但我们必须追随我们的激情。如果您想听起来像 Led Zeppelin,但要练习使您听起来像 Garth Brooks 的声学,那么学习吉他是很困难的。非常令人沮丧!
  • @daniel:错了。基础是基础。无论您是想玩 led zepelin、活结还是 eric clapton,基础都是一样的。吉他是电的、原声的、空心的、贝斯没关系……所有人都演奏相同的音符。如果您会弹奏,则可以在声学中弹奏活结。同样,OP 需要首先获得基础知识。洛朗是对的。
  • @itachi 如果你是对的,我会弹吉他但不会编程。相反,情况正好相反。
  • Offtopic 但让我说,在这种情况下,您的方法是错误的。我演奏硬摇滚,金属原声和电声。取决于规模。如果你认为摇滚,金属只是关于失真,放大器,那么它对你没有帮助。不要沉迷于声音。如果您只想要那种“声音”而发现其他吉他失去了动力,那么您将无法演奏。更加重视准确地弹奏音符,速度(在任何吉他上)。这些是基础。如果你能用原声演奏,你就会成为电声大师,cz原声更难演奏。

标签: php javascript html ajax forms


【解决方案1】:

你想做的事情是非常可行的。事实上,如果您将 JSF 与 ICEfaces 或 PrimeFaces 等丰富的组件框架一起使用,那么您将获得开箱即用的功能。

与所有网络技术一样,能够使用一种语言实现它意味着您可以使用其他语言实现它。我已经手动编写了您在 PHP 中描述的表单。这是大量的工作,当您第一次开始时,使用每个字段支持表单的脚本肯定是最简单的。随着您的进步,您将发现如何在请求中包含字段名称并将其备份到一个脚本,以便每个表单进行 Ajax 交互。你当然可以进一步减轻负担。

PHP 框架或许能够让这个过程变得不那么繁琐,但我没有使用过它们,并且建议您在开始了解它们之前避免使用它们。像 Cake 或 Rails 这样的系统提供的魔法非常有用,但您必须了解权衡取舍和底层技术,否则很难在它们的抽象之上构建健壮的系统。

计算服务器费用并不直观。一方面,处理大型提交比处理小型提交要多。您可能会用几个小请求替换一个大请求以获得净收益。这将取决于您必须对每个表单字段执行的工作类型。例如,自动完成比检查已经使用的用户名要昂贵得多,这比(比如说)验证某个字符串实际上是一个数字或其他一些明显的验证要昂贵得多。

由于您不想重复自己,因此很容易将所有验证放在一边-边。但是客户端验证的速度并不能替代这样一个事实,即如果您指望它会引入安全问题。所以我一般的做法是在服务器端做验证,如果有时间,我也会把它添加到客户端,以提高响应能力。 (事实上​​,我实际上尽可能从数据库中的验证开始,然后是服务器端代码,然后是客户端,因为这样即使我的应用程序崩溃了,我也不会留下无效数据担心)。

过去,您可以期望您的网站在 SSL 下的运行速度大约是 SSL 的 1/3。我没有最新的数字,但它总是比未加密的要贵。这只是更多的工作。 SSL 设置也不是很有趣。我工作过的大多数网站要么将整个内容置于 SSL 之下,要么将网站分解为某种购物车,该购物车已加密,其余部分则不理会。我不会花费过多的精力来优化它。如果您需要加密,请使用它并继续您的一天。

在你的比赛阶段,我不会因为表现而失眠。由于您是全新的,因此请专注于学习过程,尝试实现您认为令人满意的功能并以改进为目标。痴迷于性能很容易,但你不会有那种会让你长期受压的流量,除非地球上一半的人都想购买你的产品,你的网站非常繁重,你的主机非常虚弱的。当它出现时,您应该分析您的代码并找到您在哪里做了太多工作并修复它,您将比您尝试预先设计一个高性能系统更进一步。您只是没有足够的数据来执行此操作。而且现在大多数服务器都远远超出了处理相当重负载的能力——在不久的将来,你可能不会每秒维持数百名访问者,而且要降低 20 美元的 VPS 运行速度还需要更多的时间一个相当简单的 PHP 站点。考虑到一个访问者每秒的点击量约为 80,000 次,您需要每天 800 万次点击才能达到 100/秒。除非你做了一些愚蠢的事情,否则你不需要一秒钟的时间来呈现一个页面。当我们学习的时候,我们都会做几次。 :)

祝你旅途愉快!

【讨论】:

  • 我还没有 SSL - 这只是一种可能性。是的,我不会真正获得巨大的流量。实际的一点是,由于我的交易性质,我预计 70% 的年度流量将在两个特定月份内。但是,是的,我的网站不会爆炸或任何事情。我可以将其简化为一个脚本 - 正如您所说的在请求中使用“发送字段名称”。听起来不错。但我想我会每隔 20-30 秒使用 ajax 保存一次表单。稍后返回实时更新。
  • 您可能会发现这比实时更麻烦,但这是一个公平的计划。试一试,将您的问题带回 S.O.
  • 是的,听起来更麻烦。我可以使用 HTTP_RAW_POST_DATA 并分解来获取字段名称。然后使用函数逐个字段更新我的数据库。这样,我的 php 脚本将能够处理单个以及多个数据记录更新而不会丢失时间。注意到这里有什么缺陷吗?
猜你喜欢
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 2011-05-01
  • 2022-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多