我正在用yii构建一个数据库密集型应用程序。因此,性能和安全性自然是一个值得关注的问题。除此之外,验证也是一个主要的标准。为了安全起见,我计划对所有Sql查询使用参数绑定。对于验证,我想使用Yii提供的验证器,而不是我自己的验证器。我意识到CActiveRecord的性能会受到影响。因此,我计划为我所有的表创建Cmodel类,在这些相应的模型中定义验证规则,并定义函数来执行sql查询以检索和插入数据。我在网站上的所有数据收集主要是通过表单(大约95%),如果我使用Cformmodel,我不是真的理解Cmodel和Cformmodel之间的区别,使用这两种方式是否会影响性能。
另外,为了防止XSS攻击,我想使用HTML purify包装器作为验证规则,因为我几乎到处都看到这个包装器的性能很差,即使我使用它作为验证规则,它也会很糟糕吗?我是否应该使用Chtml::Encode显示我的输出文本,即使我正在净化输入?
我处理数据的粗略计划是:
$users= new Users() ; //Users is extending CModel , contains validation rules
$users=getdata(Yii->app->userid()) ;
if(isset('update'))
{
if($users->validate())
{$users->updatedata() ; }
}
$this->render('users','data'=>$users) 发布于 2012-10-07 06:07:36
CFormModel继承自CModel,CModel只是一个泛型模型类,使用CFormModel没有性能差异,如果您不打算使用CActiveRecord,这将更适合您的应用程序。
对于“执行sql查询的函数”,希望你指的是存储过程,否则不会有很大的性能提升,即使这样,编写自己的SQL查询只用于插入和检索单个模型也没有太大帮助。我的建议是,你应该关心以后的性能。一旦你真的有了需要改进的东西。
净化输入它与编码不同,使用HTML purify您可以消除有害的html,以防止XSS或其他您不想允许的标记。但是字符串仍然可以包含(‘),例如。而CHtml::encode所做的只是生成HTML等效项,这样您就可以得到html实体了。
发布于 2012-10-08 13:02:28
我已经发布了一个链接到yii论坛,在那里你可以找到最佳答案。
Yii Forum Link
CModel模型类是CFormModel和CActiveRecord的基础。
当我们对数据库的表执行CRUD操作时,需要使用CActiveRecord,并需要根据它们定义变量。
当我们不需要CRUD操作而是像登录表单这样的逻辑操作时,就会使用CFormModel。在这里,我们没有为模型使用任何表。
发布于 2013-01-24 23:58:10
这就是所谓的过早优化综合症,因为你用早期的和不必要的优化阻碍了你的开发。
首先使用最好的模型/模式开发您的应用程序,然后再寻找瓶颈和提高性能、加载时间等方法。
https://stackoverflow.com/questions/12763763
复制相似问题