- 浏览: 3420732 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
http://www.21haolou.com/articles/show/46
引言
CakePHP 有些慢已经不是什么公开的秘密了。但不为众人所知的是这是一个大大的阴谋。而我会因揭露这个阴谋惹上不少麻烦。不过我愿意冒险一搏。我手头有大量的记录和文档线索表明CakePHP开发团队的成员手头持有戴尔,IBM,思科以及其他服务器厂商的公司股票。想必你已经听说过这类的措辞像“硬件白菜价,而程序员太金贵了。"Cake的开发团队从中嗅到了商机,他们便制作出了这款易于上手和开发,但是却跑得很慢的框架来。他们希望你在硬件方面多砸点钱来。这点子太有才了吧,对不?好了,闲扯就此结束。作为一个CakePHP的开发者,每当你学会使用本文中的一个技巧,套在你脖子上的这枷锁就少了一层。
注意:
本文认为你已经在使用ContainableBehavior并且已经对你的SQL查询进行优化和索引了
我使用ab(ApacheBench是Apache自带的HTTP性能测试工具)对所有改动后的性能进行了测试,并与基准值做了对比。这里的基准值是 debug级别为0时的简单应用程序的性能。我并没有把实际基准数字贴出来。因为这类数字会因应用程序和机器性能而波动。不过我将以百分比的形式将大概的 性能提升数据附在了文中。
另外,你想看看我测试所用的应用程序内容?门儿都没有。
一、 将debug级别设置为0
这技巧很没技术含量,是吧?在Google小组中有 大量的帖子在扯其他方法。想都不用想,先把你CakePHP应用程序的debug级别设置为0在说。
将此值设0和不设0是有区别的,原因就在Cake引 擎生成两部分缓存内容
第一部分是/tmp /cache/models中的缓存内容。在这里,你会看到每个模型都有一个对应的文件,这些文件中包含的是数据库的表模式(table schema)。想必你已经看到过数据库查询记录中包含一些”DESC table;” 这类的查询内容,这些缓存文件就是做着这个用的。当debug级别设置为0时,这些数据库查询就不会进行。
第二部分的缓存是在/tmp /cache/persistent中。当你运行你的Cake网页应用时,CakePHP会用到其中几种不同的文件。而通常拖慢CakePHP运行速度最 厉害的当属cake_core_file_map。这个文件保存了到各个不同类的路径信息。为了创建这个文件,CakePHP会做一个必须但是也是非常耗 费时间的搜索,以便在你的目录结构中找到对应的文件。
那么,debug级别是0和debug级别大于0时有什么区别呢?呵,他们两者之间相差的是2.73517104年。当debug级别大于0时,这些缓存文件的时间周期是10秒钟。而把debug级别设置为0时,这些文件的缓存时间周期则是999 天。(译者:这就是前面 2.73517104年差距的来历)
实 际上我这里有这样一个疑问:既然这种事情是非常“脑残”的技巧,那么连这种“脑残”的技巧都不采用的人是不是比“脑残”好“脑残”呢?如果连“脑残”的人 都能弄明白这种技巧,那么那些不会的人的脑子是不是被狗吃了。既然这些人的脑子被狗吃了,那么我对这钟人讲这种技巧岂不是肉包子打狗——有去无回?(译 者:囧)
性能大致提升数字为:80%到100%左右
二、缓存拖慢速度的查询/网络服务请求等等
对于缓存你应用程序中的单个部件而 言,CakePHP的缓存库(cache lib)是一个非常不错的工具。它会处理所有“脏重累的活儿”,比如向缓存引擎中的文件或者内存中写入内容。你所需要做的就是想清楚哪些东西需要缓存。
打个比方说,你有一个已经索引并已经优化了的数据库 查询,但是查询速度还是比较慢。CakePHP的烹饪手册上(link)就提供了一个例子,教你 如何将缓存库应用起来,缓存后,CakePHP就不会对每一个请求都进行这种拖慢速度的数据库查询。
如 果你网站的部分内容是来自其他网络服务的的,比如一个显示最新推文的区域(这个例子并不恰当,因为大多数Twitter挂件都是用JavaScript写 成的,这里读者就将就一下吧。)我们完全没必要对每个发来的请求都调用这个网络服务。只需像上面一样,用缓存功能将其缓存起来即可
性能提升:+0% 到 1000000%,这取决于你的应用程序,以及你所缓存的内容。
三、缓存视图
你可将这视作整个页面的缓存。CakePHP的烹饪手册提供了一些基本的知识(link),因为页面创建依然是通过PHP进 行,所以对于保持页面的部分动态内容还是有些灵活方法的。比如,如果你运营着一个网店时,你可以将产品页面进行缓存,但是页面上还是可以有一块区域来显示 用户的购物车内容,
注意:在CakePHP的烹饪手册中有一个专门的小节来介绍CakePHP支持的各种缓存引擎(link)。 但是,目前的版本(1.2.1.8004),视图缓存所使用的是基于文件的缓存引擎,并不依赖于上面第二部分所说的缓存库( cache library)
速度大致提升:+130% 到 160%
四、HTML网页页面缓存
这个是我们自己的想出来的(link)。 它的原理跟WordPress上的Super Cache插件一样。它会将CakePHP的 页面以HTML文档的形式直接写入网站的根目录。下次,当用户点击这个页面时,你的服务器会直接将这个HTML文件传输给用户,而无需运行PHP。
这种方法也有其明显的局限性,比如缓存的页面上完全 没有动态内容,缓存的内容也不会自动清除。但是,对于RSS的订阅源或者其他像popurls 这种所有浏览者所看到的都是同样内容的页面而言,这种方法就非常不错。
速度提升:~60000%——这绝非夸张,这才是真正的速度提 升
五、 APC
维基百科是这样描述APC的,“它是一种自由的开源框架,它可以优化PHP的中间 代码,并在共享内存中缓存PHP字节码编译器(Bytecode compiler)中的数据和编译好的代码。”(维基百科链接)。总的来说,速度真TMD的 快,并且你还无需改动你的代码。很爽,是吧?
速度提升:+25% 到 100%
六、持久性模型
CakePHP的烹饪手册并没有提及这个技巧,这个 功能的开启很简单,你只需在你的控制器(或者父控制器中)中添加如下属性即可
var $persistModel = true;
在页面刷新后,你会注意到 /tmp/cache/persistent 目录下会出现两个新的文件,它对应控制器所包含的每个模型。一个文件是模型的缓存,另一个缓存的是类注册器(ClassRegistry)中的对象。跟上 面所提到的视图的缓存一样,这种缓存只会保存在文件系统中。
速度提升:+0%到200%
这种方法效果怎么样取决于你的应用程序。如果你的控制器只有一个模型,并且并没有与其他任何模型关联,那么你不会看到有多大的速度提升。在我们的测试应用程 序中,它带来的速度提升大约在100%左右。其中测试用的控制器中有一个模型,该模型关联其他三个模型,这些关联的模型又有各自关联的模型。
七、在APC中存储持久性缓存内容
要使用这个,你需要开启APC,将CakePHP的 核心缓存模式设置为APC。在core.php文件中,添加如下代码。
Cache::config('_cake_core_', array('engine' => 'Apc',
'duration'=> 3600,
'probability'=> 100,
));
这会将通常缓存在/tmp/cache/persistent 中的缓存文件(不包括持久性模型)保存到内存中去。
速度提升:~25%
这带来的速度提升很难衡量。我试着启用不带指令缓存 (opcode caching)的APC,以便衡量所带来的速度提升,但是却找不到如何设置。
八、加速反向网址路径的寻找
目前有两种方法可以达到此目的。第一种是Debuggable.com网站上Tim同学在一篇文章中所提及的。Tim的方法只对某种链接类型有效,而且还会破坏反向网址路径的寻找功能,而我的方法使用的是缓存功能(link) (译者:具体内容见这个链接。),CakePHP开发团队的Nate同学也称这种方法非常“高明”(link)
速度提升:~50%
正如这里的所有技巧一样,实际的速度提升取决于你的 应用程序。如果你并不使用大量的自定义网址路径,而且页面的链接也不多,那么这个技巧不会带来多大的速度提升
引言
CakePHP 有些慢已经不是什么公开的秘密了。但不为众人所知的是这是一个大大的阴谋。而我会因揭露这个阴谋惹上不少麻烦。不过我愿意冒险一搏。我手头有大量的记录和文档线索表明CakePHP开发团队的成员手头持有戴尔,IBM,思科以及其他服务器厂商的公司股票。想必你已经听说过这类的措辞像“硬件白菜价,而程序员太金贵了。"Cake的开发团队从中嗅到了商机,他们便制作出了这款易于上手和开发,但是却跑得很慢的框架来。他们希望你在硬件方面多砸点钱来。这点子太有才了吧,对不?好了,闲扯就此结束。作为一个CakePHP的开发者,每当你学会使用本文中的一个技巧,套在你脖子上的这枷锁就少了一层。
注意:
本文认为你已经在使用ContainableBehavior并且已经对你的SQL查询进行优化和索引了
我使用ab(ApacheBench是Apache自带的HTTP性能测试工具)对所有改动后的性能进行了测试,并与基准值做了对比。这里的基准值是 debug级别为0时的简单应用程序的性能。我并没有把实际基准数字贴出来。因为这类数字会因应用程序和机器性能而波动。不过我将以百分比的形式将大概的 性能提升数据附在了文中。
另外,你想看看我测试所用的应用程序内容?门儿都没有。
一、 将debug级别设置为0
这技巧很没技术含量,是吧?在Google小组中有 大量的帖子在扯其他方法。想都不用想,先把你CakePHP应用程序的debug级别设置为0在说。
将此值设0和不设0是有区别的,原因就在Cake引 擎生成两部分缓存内容
第一部分是/tmp /cache/models中的缓存内容。在这里,你会看到每个模型都有一个对应的文件,这些文件中包含的是数据库的表模式(table schema)。想必你已经看到过数据库查询记录中包含一些”DESC table;” 这类的查询内容,这些缓存文件就是做着这个用的。当debug级别设置为0时,这些数据库查询就不会进行。
第二部分的缓存是在/tmp /cache/persistent中。当你运行你的Cake网页应用时,CakePHP会用到其中几种不同的文件。而通常拖慢CakePHP运行速度最 厉害的当属cake_core_file_map。这个文件保存了到各个不同类的路径信息。为了创建这个文件,CakePHP会做一个必须但是也是非常耗 费时间的搜索,以便在你的目录结构中找到对应的文件。
那么,debug级别是0和debug级别大于0时有什么区别呢?呵,他们两者之间相差的是2.73517104年。当debug级别大于0时,这些缓存文件的时间周期是10秒钟。而把debug级别设置为0时,这些文件的缓存时间周期则是999 天。(译者:这就是前面 2.73517104年差距的来历)
实 际上我这里有这样一个疑问:既然这种事情是非常“脑残”的技巧,那么连这种“脑残”的技巧都不采用的人是不是比“脑残”好“脑残”呢?如果连“脑残”的人 都能弄明白这种技巧,那么那些不会的人的脑子是不是被狗吃了。既然这些人的脑子被狗吃了,那么我对这钟人讲这种技巧岂不是肉包子打狗——有去无回?(译 者:囧)
性能大致提升数字为:80%到100%左右
二、缓存拖慢速度的查询/网络服务请求等等
对于缓存你应用程序中的单个部件而 言,CakePHP的缓存库(cache lib)是一个非常不错的工具。它会处理所有“脏重累的活儿”,比如向缓存引擎中的文件或者内存中写入内容。你所需要做的就是想清楚哪些东西需要缓存。
打个比方说,你有一个已经索引并已经优化了的数据库 查询,但是查询速度还是比较慢。CakePHP的烹饪手册上(link)就提供了一个例子,教你 如何将缓存库应用起来,缓存后,CakePHP就不会对每一个请求都进行这种拖慢速度的数据库查询。
如 果你网站的部分内容是来自其他网络服务的的,比如一个显示最新推文的区域(这个例子并不恰当,因为大多数Twitter挂件都是用JavaScript写 成的,这里读者就将就一下吧。)我们完全没必要对每个发来的请求都调用这个网络服务。只需像上面一样,用缓存功能将其缓存起来即可
性能提升:+0% 到 1000000%,这取决于你的应用程序,以及你所缓存的内容。
三、缓存视图
你可将这视作整个页面的缓存。CakePHP的烹饪手册提供了一些基本的知识(link),因为页面创建依然是通过PHP进 行,所以对于保持页面的部分动态内容还是有些灵活方法的。比如,如果你运营着一个网店时,你可以将产品页面进行缓存,但是页面上还是可以有一块区域来显示 用户的购物车内容,
注意:在CakePHP的烹饪手册中有一个专门的小节来介绍CakePHP支持的各种缓存引擎(link)。 但是,目前的版本(1.2.1.8004),视图缓存所使用的是基于文件的缓存引擎,并不依赖于上面第二部分所说的缓存库( cache library)
速度大致提升:+130% 到 160%
四、HTML网页页面缓存
这个是我们自己的想出来的(link)。 它的原理跟WordPress上的Super Cache插件一样。它会将CakePHP的 页面以HTML文档的形式直接写入网站的根目录。下次,当用户点击这个页面时,你的服务器会直接将这个HTML文件传输给用户,而无需运行PHP。
这种方法也有其明显的局限性,比如缓存的页面上完全 没有动态内容,缓存的内容也不会自动清除。但是,对于RSS的订阅源或者其他像popurls 这种所有浏览者所看到的都是同样内容的页面而言,这种方法就非常不错。
速度提升:~60000%——这绝非夸张,这才是真正的速度提 升
五、 APC
维基百科是这样描述APC的,“它是一种自由的开源框架,它可以优化PHP的中间 代码,并在共享内存中缓存PHP字节码编译器(Bytecode compiler)中的数据和编译好的代码。”(维基百科链接)。总的来说,速度真TMD的 快,并且你还无需改动你的代码。很爽,是吧?
速度提升:+25% 到 100%
六、持久性模型
CakePHP的烹饪手册并没有提及这个技巧,这个 功能的开启很简单,你只需在你的控制器(或者父控制器中)中添加如下属性即可
var $persistModel = true;
在页面刷新后,你会注意到 /tmp/cache/persistent 目录下会出现两个新的文件,它对应控制器所包含的每个模型。一个文件是模型的缓存,另一个缓存的是类注册器(ClassRegistry)中的对象。跟上 面所提到的视图的缓存一样,这种缓存只会保存在文件系统中。
速度提升:+0%到200%
这种方法效果怎么样取决于你的应用程序。如果你的控制器只有一个模型,并且并没有与其他任何模型关联,那么你不会看到有多大的速度提升。在我们的测试应用程 序中,它带来的速度提升大约在100%左右。其中测试用的控制器中有一个模型,该模型关联其他三个模型,这些关联的模型又有各自关联的模型。
七、在APC中存储持久性缓存内容
要使用这个,你需要开启APC,将CakePHP的 核心缓存模式设置为APC。在core.php文件中,添加如下代码。
Cache::config('_cake_core_', array('engine' => 'Apc',
'duration'=> 3600,
'probability'=> 100,
));
这会将通常缓存在/tmp/cache/persistent 中的缓存文件(不包括持久性模型)保存到内存中去。
速度提升:~25%
这带来的速度提升很难衡量。我试着启用不带指令缓存 (opcode caching)的APC,以便衡量所带来的速度提升,但是却找不到如何设置。
八、加速反向网址路径的寻找
目前有两种方法可以达到此目的。第一种是Debuggable.com网站上Tim同学在一篇文章中所提及的。Tim的方法只对某种链接类型有效,而且还会破坏反向网址路径的寻找功能,而我的方法使用的是缓存功能(link) (译者:具体内容见这个链接。),CakePHP开发团队的Nate同学也称这种方法非常“高明”(link)
速度提升:~50%
正如这里的所有技巧一样,实际的速度提升取决于你的 应用程序。如果你并不使用大量的自定义网址路径,而且页面的链接也不多,那么这个技巧不会带来多大的速度提升
发表评论
-
php图片添加文字水印实现代码
2016-03-16 13:13 1130http://my.oschina.net/zyt1978/b ... -
借助phpmailer使用gmail和163邮箱发送邮件
2016-01-16 14:03 4413http://www.solagirl.net/phpmail ... -
PHP 启用Gzip 压缩进行优化
2014-12-02 22:08 1264确定服务器支持gzip compression Use PHP ... -
自定义Access-Control-Allow-Origin策略以解决字体文件跨域权限问题
2014-11-23 22:43 1975http://yuguo.us/weblog/access-c ... -
推荐 7 款类似Google Analytics 的开源程序
2014-11-14 23:30 4171http://www.aips.me/google-analy ... -
piwik安装过程
2014-11-13 23:08 972http://blog.csdn.net/gudaoqianf ... -
使用 PHP 获取并解析 JSON 显示在页面中
2014-11-05 22:44 3442http://www.qianxingzhem.com/pos ... -
PHP获得IP
2014-11-02 15:06 1124<?php function getIP() /* ... -
CakePHP的全局常量及方法
2014-10-28 14:32 1192http://docs.30c.org/cakephp/glo ... -
php日期
2014-10-21 21:04 891http://php.net/manual/zh/functi ... -
PHP生成各种验证码和Ajax验证
2014-10-08 13:47 984http://www.helloweba.com/view-b ... -
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2014-10-07 14:48 2272http://www.jb51.net/article/208 ... -
PHP中出现Notice: Undefined index的三种解决办法
2014-09-14 17:18 2536http://blog.csdn.net/stellaah/a ... -
细说websocket - php篇
2014-07-24 21:04 1216http://www.cnblogs.com/hustskyk ... -
CakePHP log(日志)操作
2013-12-07 23:19 1367http://luzl.iteye.com/blog/6537 ... -
使用PHP缩略图和剪切图
2013-11-28 23:05 1886API: resource imagecreatetrueco ... -
几个jQuery的图片裁剪插件
2013-11-28 21:02 4263http://hi.baidu.com/coffeant/it ... -
PHP URL 重定向 的三种方法
2013-11-26 10:06 1217http://my.oschina.net/qingyi090 ... -
PHP如何实现整除
2013-11-24 00:48 3405http://www.zhixing123.cn/php/27 ... -
PHP截断包含汉字不产生乱码的方法
2013-11-21 22:29 1057PHP截取汉字乱码问题解决方法mb_substr函数的应用 h ...
相关推荐
标题中的“最简单的方法来安装CakePHP”表明我们将探讨如何以最简便的方式在你的开发环境中设置和安装CakePHP,这是一个非常流行的PHP开发框架。CakePHP以其MVC(模型-视图-控制器)架构模式,丰富的功能和易于学习...
- **提升应用性能**:提供了一些建议来优化生产环境下的应用性能。 #### 十二、Tutorials & Examples(教程与示例) - **博客教程**:通过一个完整的博客项目示例,展示了如何使用CakePHP框架构建实际应用。 - **...
8. **哈巴狗(CakePHP Bake Tool)**:这是一个内置的代码生成工具,可以快速生成模型、控制器、视图和其他基础代码,大大加快开发速度。 9. **验证(Validation)**:手册会介绍如何在模型中设置数据验证规则,...
**CakePHP 1.2 API 中文... CakePHP 1.2 API 中文文档覆盖了框架的主要组件、类库和方法,是开发者学习和使用该框架的重要参考资料。通过深入理解和实践这些知识点,开发者能够高效地构建稳定、可维护的PHP Web应用。
6. **烤箱**(Bake):这是CakePHP自带的一个工具,可以自动生成模型、控制器、视图等基础代码,加快开发速度。 7. **错误处理与调试**:CakePHP提供了一套完整的错误处理和调试工具,如DebugKit,便于开发者查找和...
10. **性能优化**:CakePHP提供缓存机制,包括查询缓存、视图缓存和页面碎片缓存,有效提高应用程序的运行速度。 11. **社区与文档**:CakePHP拥有活跃的开发者社区和详尽的官方文档,遇到问题时可以快速找到解决...
- **Cake中文手册.chm**:这是官方中文文档,包含了详尽的API参考和教程,帮助开发者快速掌握CakePHP的使用方法。 - **访问脚本之家.html**:可能是一个关于CakePHP或其他PHP技术的文章链接,提供更多的学习资源。 -...
2. **目录结构**:CakePHP有清晰的目录结构,如APP(应用程序)、VENDOR(第三方库)、WEBROOT(网页资源)等,这有助于保持代码组织有序。 3. **路由系统**: CakePHP的路由机制允许开发者灵活地定义URL模式与控制...
其强大的命令行工具Symfony Console也极大地提升了开发效率。 **CakePHP框架** CakePHP是一个基于MVC(模型-视图-控制器)架构的PHP框架,它强调开发速度和易用性。该框架提供了许多开箱即用的功能,如ActiveRecord...
快速开发**:CakePHP v2.3.0引入了“Bake”工具,它是一个命令行接口,能够自动生成模型、控制器、视图等基础代码,大大加快了开发速度。 **4. 支持和社区**:CakePHP拥有活跃的社区和丰富的文档资源,开发者可以...
app, CakePHP 3.0应用程序模板 应用程序框架 用创建应用程序的框架可以在下面找到框架源代码: /cakephp 。安装下载 Composer 或者更新 composer self-update 。运行 php composer.phar create-
在 CakePHP 3.4 中,这种原则体现得尤为明显,它通过清晰地定义应用结构、默认行为等,减少开发者需要编写的代码量,从而提高开发效率。 - **模型层**:负责处理数据和业务逻辑。它提供了一套完整的 ORM(对象关系...
打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;...CakePHP的中文资料很少,大部分是英文的,希望对大家有用,谢谢!
通过学习CakePHP源码,开发者不仅可以掌握框架的使用,还能提升PHP编程技能,理解设计模式,以及如何构建高效、可维护的Web应用。 在解压的文件`cakephp-cakephp-3b830a4`中,包含了CakePHP的源代码仓库的一个特定...
在CakePHP框架中,这一过程同样重要,它允许开发者通过简单的配置来管理URL的映射关系,从而实现更加灵活和可维护的应用架构。 #### CakePHP中的路由机制 CakePHP提供了强大的路由系统,能够帮助开发者快速地设置和...
通过编写清晰的断言,模拟用户行为,以及检查结果,SimpleTest可以帮助开发者确保CakePHP应用程序的稳定性和质量。无论你是新手还是经验丰富的开发者,理解并熟练使用SimpleTest都能大大提高你的工作效率。
通过缓存、数据集的批处理、查询优化等手段,CakePHP可以提升应用的性能。它支持多种缓存引擎,如Memcached和Redis。 15. **部署与扩展**: CakePHP遵循最佳实践,使应用程序易于部署和维护。此外,丰富的插件库...
对于使用CakePHP框架的应用程序而言,这一过程被极大地简化了。CakePHP通过内置的`PaginatorComponent`组件提供了强大的分页功能,使得开发人员能够轻松处理大量数据的分页显示问题。 #### 二、`PaginatorComponent...
1. **快速开发**:CakePHP 提供了大量的内置功能,如数据库连接管理、ORM(对象关系映射)、表单处理和验证、自动化的脚手架生成等,这大大加快了开发速度。 2. **MVC架构**:按照MVC设计模式,开发者将业务逻辑、...
CakePHP框架中实现Ajax传值是通过AJAX (Asynchronous JavaScript and XML) 技术与后端的CakePHP控制器进行数据交换的一种方式。通常在Web开发中,Ajax用于创建更为动态和响应快速的用户界面。当用户与页面上的元素...