Ajax非同步請求所耗時間比較

來源:互聯網
上載者:User

Ajax非同步擷取目標內容所耗的時間對比.
方法1. MVC的模式訪問目錄對象的指定函數,執行查詢語句
方法2.直接建立sql語句和資料庫連接,執行查詢語句 .
方法3.ZendFramework的Zend_Db執行查詢語句


Html代碼:
<input type="text"name="username" id="username" onblur='cek.checkUser()'/>


將執行以下Js代碼:
複製內容到剪貼簿

Var cek = {
checkUser : function(user) {
if(!$('modify').value || $('default_user').value != $(user).value) {
var url = "?mod=admin&file=sys&method=checkusername";
//var url = 'test.php’;
//var url = '../private/zend/index.php';
var pars = '';
var myAjax = new Ajax.Request(url,{method:'get',parameters:pars,onComplete:function(contents) {}});
}
}
}
方法1.以MVC模式實現串連資料庫並執行查詢語句的功能,?mod=admin&file=sys&method=checkusername所執行的代碼如下:
複製內容到剪貼簿

$application = new SysAction;
$application->checkusername();
Class sysAction {
Function checkusername() {
$link = new DbLink();                        
$rs = $link->checkUser(“username=’crane’”);
}
}
共建立兩個對象.SysAction,DbLink,所耗時間如下:

GET  http://localhost/admin/?mod=admin&file=sys&method=checkusername(63ms)
GET  http://localhost/admin/?mod=admin&file=sys&method=checkusername(62ms)
GET  http://localhost/admin/?mod=admin&file=sys&method=checkusername(62ms)
GET  http://localhost/admin/?mod=admin&file=sys&method=checkusername(62ms)
GET  http://localhost/admin/?mod=admin&file=sys&method=checkusername(62ms)
GET  http://localhost/admin/?mod=admin&file=sys&method=checkusername(63ms)


方法2.直接連接資料庫,並執行查詢語句. test.php所執行代碼如下:
複製內容到剪貼簿

$db = mysql_connect('localhost','root','123456');
mysql_select_db('test');
$sql = "select * from table where username='crane'";
$result = mysql_query($sql,$db);
while($row = mysql_fetch_array($result)) {}
所耗時間如下:

GET http://localhost/admin/test.php(15ms)
GET http://localhost/admin/test.php(15ms)
GET http://localhost/admin/test.php(15ms)
GET http://localhost/admin/test.php(15ms)
GET http://localhost/admin/test.php(15ms)
GET http://localhost/admin/test.php(15ms)


方法3.ZendFramework架構中Zend_Db類,執行查詢語句,../private/zend/index.php代碼如下.
主檔案部分代碼.
複製內容到剪貼簿

$frontController =Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory('application/controllers');
$frontController->dispatch();
控制器部分代碼:
複製內容到剪貼簿

require_once 'Zend/Db.php';
class IndexController extendsZend_Controller_Action {
function init() {
}
functionindexAction() {
$params= array(
"host"=> 'localhost',
"username"=> 'root',
"password"=> '123456',
'dbname' => 'test'
);
//$user= 'crane';
$db= Zend_Db::factory('PDO_MYSQL',$params);
$select= $db->select();
$select->from('table','username')
->where($db->quoteInto('username=?','crane'))
;
$sql= $select->__toString();
$result= $db->fetchAll($sql);
}
}
所耗時間如下:

GET http://localhost/private/zend/index.php(125ms)
GET http://localhost/private/zend/index.php(141ms)
GET http://localhost/private/zend/index.php(110ms)
GET http://localhost/private/zend/index.php(141ms)
GET http://localhost/private/zend/index.php(109ms)
GET http://localhost/private/zend/index.php(141ms)



測試環境:

Windows NT 5.1 build 2600
Apache 2.0
PHP 5.2.5
Mysql 5.0.45
Zend Optimizer v3.3.0

PHP的物件導向一直以來就有爭議,這裡僅是在非同步呼叫時所耗的時間對比。Mysql與php效能最優的環境當然是lamp,
有興趣的可以試試在最簡最優環境下測試一下。PHP使用對象比不使用對象更耗時間是肯定的,
但PHP的cache和靜態化對項目的速度提高有決定性的意義,大型項目的開發,這種機制是必不可少的。這裡所做的測試,僅僅說明不同需求的項目,可採用不同的實現方法,沒必要凡用必OO
^_^……
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.