Railscast不推荐生产解决方案,我正在寻找原因

时间:2012-04-27 08:14:22

标签: ruby-on-rails ruby-on-rails-3 jquery railscasts

在此railscast我们的好朋友贝茨先生介绍了创建可以搜索,排序和分页一组数据的应用程序的解决方案。在进行AJAX搜索时,他提供的解决方案将在用户输入搜索框时显示搜索结果。这是他的解决方案:

$('#products_search input').keyup(function () {
  $.get($('#products_search').attr('action'), ↵ 
    $('#products_search').serialize(), null, 'script');
  return false;
});

然而他说:“请注意,这只是一个快速的演示,并不是最好的方法。如果你在生产应用程序中做这样的事情,你可以使用几个jQuery插件。”我正在寻找他为什么认为这不适合生产的解释。提前谢谢!

1 个答案:

答案 0 :(得分:1)

我在这个解决方案中看到了两个主要问题。第一个是每次按下一个键时都要发出一个HTTP(AJAX)请求,这不是最有效的方法。第二个是你基本上在响应中调用evaleval是坏的,因为它可能导致恶意用户执行你不想执行的代码。

关于改进的一些建议:

  • 使用正确的JSON解析器并将数据作为JSON传回。 (您可以使用$.getJSON
  • 限制请求 - 不要在每个keyUp上执行此操作,也可以启动计时器,如果在最后一秒没有按下任何键,则仅提交请求,这意味着它不会为快速键入的人拨打大量电话
  • 缓存响应。如果您已经搜索了某些内容,则无需再次获取数据。保留此会话中先前调用的注释(在JS对象中)及其结果。