nginx负载均衡和lvs负载均衡的比较分析
来源:http://www.sudone.com/nginx/nginx_vs_lvs.html
来源:http://www.sudone.com/nginx/nginx_vs_lvs.html
在一个网站中往往图片,css文件,js文件会占用掉大量的带宽和载入时间.采用nginx做前端服务器可以设置类似的静态文件客户端的缓存时间.比如:
location ~ \.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)$ {
expires 30d;
access_log off;
}
就可以将类似静态文件的客户端缓存时间设置为30天,意味着客户在30天内重新访问这些文件时只需要在本地缓存中读取,而不用重新从服务器获取.这样页面载入速度就大大提高了.
当然,对于这些静态文件的访问记录计入日志,在一般情况下也是没有意义的,将accss_log设为off,能在一定程度上降低服务器压力.
apt-get install mysql-server
apt-get install nginx
deb http://php53.dotdeb.org stable alldeb-src http://php53.dotdeb.org stable all
apt-get updateapt-get install php5-cgi php5-fpm
php-cgi –i
## nginx-site-conf.sample:# Php Site configuration for nginx webserver## 1. set server root /path/to/your/website;# 2. Rename this file. Copy it to /etc/nginx/sites-available, /etc/nginx/sites-enabled# or otherwise ensure that this file is included by the nginx.conf# 3. Restart nginx webserver, and php-fpm service.#server {root /home/dawnh/opslife.com;server_name opslife.com www.opslife.com d9.opslife.com;listen 80;access_log /var/log/nginx/opslife.com.access.log;location / {index index.html index.htm index.php;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root /var/www/nginx-default;}# pass the *.php scripts to php-fpm listening on tcp port 9000#location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param SERVER_NAME $http_host;fastcgi_ignore_client_abort on;}}
<?php phpinfo();?>
来源:不详,如有了解,请告知,谢谢
在SWAP空间不够用的情况下,如何手工添加SWAP空间?以下的操作都要在root用户下进行:
首先先建立一个分区,采用dd命令比如
dd if=/dev/zero of=/home/swap bs=1024 count=512000
这样就会创建/home/swap这么一个分区文件。文件的大小是512000个block,一般情况下1个block为1K,所以这里空间是512M。接着再把这个分区变成swap分区。
/sbin/mkswap /home/swap
再接着使用这个swap分区。使其成为有效状态。
/sbin/swapon /home/swap
现在再用free -m命令查看一下内存和swap分区大小,就发现增加了512M的空间了。不过当计算机重启了以后,发现swap还是原来那么大,新的swap没有自动启动,还要手动启动。那我们需要修改/etc/fstab文件,增加如下一行
/home/swap swap swap defaults 0 0
你就会发现你的机器自动启动以后swap空间也增大了。
来源:http://www.sudone.com/nginx/nginx_valid_referers.html
以下配置一般可称为图片防盗链配置,如果是mp3这种文件,我现在是用的cookie防盗链方式。
location /img/ {
alias /data/img/;
valid_referers none blocked server_names *.sudone.com sudone.com ;
if ($invalid_referer) {return 403;}
}
来源:http://article.yeeyan.org/view/laokun/508
过去的三年中,CodingHorror的访问量大大超出了我的预期,我当然不是在抱怨,找到一位读者并且与之展开对话本是写博客的初衷。
但是在网上,流行意味着费用,特别是带宽费用。上周当《为什么程序员不能…写程序?》这篇文章成为超级热门,网站一天的流量飙升到了近9GB:

这足够塞满两条T1专线——接近300KB/S——并且几乎每天如此。为了让网站不至于宕机,我们甚至限制了部分内容的访问。从那以后,我们意识到该做点什么了。如何才能节约网站的带宽占用?
1、使用外部图片托管
图片是头号通缉犯,除非你的网站是纯文字的。即使是这个近乎简陋的网站,图片占用的字节也要比文字多得多,让我们看看我的上一篇文章的字节占用,一篇很典型的文章:
文字: 约4,900字节
图片: 约46,300字节
网站图片: 约4,600字节
文字只占了所有内容字节的10%,为了让带宽占用有所改观,我们必须首先处理占用了90%带宽的图片。
理想地说,我们其实不用在自己的服务器上放一张图片,而将所有图片寄放在外部网站,有许多免费的或近乎免费的图片网站:
Imageshack
Imageshack提供免费无限制的存储空间,但是每张图片每小时的流量不超过100MB,听起来似乎很多,但是算一下:等于1.66MB/分钟,28KB/秒,你的图片越大,意味着你的配额越快用完。但是这个网站非常好用——甚至不用注册,根据他们的说明,任何东西都可以放上去,只要不违法。
Flickr
Flickr对免费用户有容量和带宽限制,但是不限制下载带宽。花25美元升级到专业帐户则取消限制。但是Flickr的使用条款警告“禁止将Flickr用于职业用途和企业”,并且所有外部引用的图片都必须链回Flickr。
Photobucket
Photobucket免费帐户的流量限制为10GB/月(约14MB/小时),花25美元升级到专业帐户则取消带宽限制,我没有在他们的服务条款里面找到任何相关限制。
Amazon S3
Amazon S3服务允许你直接链接文件,空间费用15美分/GB,流量费用20美分/GB,至少有一个网站运行良好。
我很喜欢Imageshack,但因为带宽限制不能负载高访问量;Photobucket使用条款最宽松,但Flickr提供更好更成熟的工具包,不幸的是,我花钱升级到专业帐户后才发现Flickr使用条款上的限制说明,所以只能顺其自然了。补充:因为不少公司防火墙限制了图片网站,看来只有Amazon S3是最好的长期选择。
虽然我最后付出了25美元/年的代价,但物有所值,我仅用2美元/月就将90%的带宽负担转嫁给了外部网站。
从此以后我不必再用URL重写的方式阻止图片盗用,所有人都可以自由使用,用户也可以随心所欲地用阅读器查看我的文章。
对了,不要忘了favicon.ico也是一个图片,它正越来越多的被阅读器和浏览器读取,favicon.ico越小越好,因为它会出人意料地影响你的带宽。
2、开启HTTP压缩
搞定了图片,开始处理剩下的内容——文字,这事小菜一碟,启用WEB服务器的HTTP压缩就可以节约三分之二的文字带宽,同样以上一篇文章为例:
原始文字: 63,826字节
压缩后: 21,746字节
不费吹灰之力,我们就节约了66%的文字带宽,包括所有的文字内容:JavaScript,HTML,CSS,在IIS6.0中开启HTTP压缩功能非常简单,Apache也一样。
永远不要提供未经HTTP压缩的内容,这可是唾手可得的免费午餐,如果不确定你的网站是否开启了HTTP压缩,试试这个HTTP压缩测试工具。
3、把RSS种子托管出去
许多网站提供RSS种子方便用户订阅,用户不必访问网站,RSS阅读器会帮用户定时获取网站的内容更新。用户可以更自由地阅读你的文章,离线也行。很不错,不是吗?
是很不错,除非你意识到RSS种子吞噬了你多少带宽。事实很惊人!Scott Hanselman告诉我他的一半带宽被RSS种子占去,Rick Klau说他的60%的页面浏览来自RSS种子。整个RSS体系决定于RSS阅读器是否合理,糟糕的阅读器会每隔一小时下载你未经压缩的RSS种子,即使没有更新。想象一下全世界数以千计糟糕的阅读器,实际上它们到处都是。
所以我有意要把这个大包袱外包出去,于是FeedBurner出现在我的视线中。虽然我很乐于把图片放到别的网站,但把RSS种子这样重要的东西交给别人,我仍然不太放心。Scott Hanselman不久前开始使用FeedBurner,所以我发了封邮件给他问问他的想法。他非常热情地给我打电话打消我的顾虑,甚至给我他的FeedBurner帐号试用。
我已经在今天下午3点将RSS种子放到了FeedBurner上,我依据ISAPI重写原则将原来的Feed URL重新定向到了新的地址。
惊喜的是带宽占用马上就有了改观,服务器每秒和每分的流量都少了许多。FeedBurner的状态页显示我的RSS种子每一秒就有一次下载,如此算来,即使经过压缩,RSS的数据量也有31KB/S。
除了节约带宽,FeedBurner还有很多别的好处。
4、优化JavaScript和CSS,减小尺寸
最后要做的就是减小文字内容的尺寸了,特别是每个页面都会包含的共用内容,CSS和JavaScript是首先需要优化的,也可以同样的方法优化HTML。
推荐一个方便的在线CSS压缩工具,它提供三个级别的CSS压缩,我用它压缩了这个页面的主CSS文件,结果如下:
原始CSS尺寸: 2,299字节
去掉无用空格后: 1,758字节
HTTP压缩后: 615字节
我们也同样可以用在线JavaScript压缩工具优化JavaScript,其基于Douglas Crockford的JSMin。在压缩之前,我重新看了一遍JS并重构了代码,使用更短的变量,删去冗余的代码:
原始JS尺寸: 1,232字节
重构之后: 747字节
去掉无用空格后: 558字节
HTTP压缩后: 320字节
可以将去除空格的办法同样用于HTML,但并不推荐。我试了一下,尺寸只是减少了10%,因此影响了可读性就不值得了。
事实上,去除空格和换行的工作都是压缩工具会帮我们做的,我们只是稍微动动手优化一下效率:
原始尺寸 压缩后
未优化的CSS 2,299字节 671字节
优化后的CSS 1,758字节 615字节
如果启用HTTP压缩,优化之后CSS只是小了10%。折衷方案是将格式打乱的代码复制到编辑工具,比如Visual Studio 2005,它会自动重新编排代码格式。
虽然这只是微小的优化,但却减小了每个页面的尺寸,我觉得还是值得的。其实我们还有更多的办法去榨干每一个多余的字节,但并不必要,因此略去了。
大功告成,非常高兴地看到带宽的使用情况有了明显改善,页面载入也从没有像现在这样顺畅。但是以上的建议并不一定就是灵丹妙药,如果访问量来得太集中,即使是最小化的,压缩过的文字内容也能瞬间堵塞一根300KB/S的专线。但我仍然希望这些措施能让我的网站应对下一次的Digg风暴,而不至于像上次那样狼狈。
“他们果然来了。”一位团购业观察人士日前向记者这样感叹。10天前,他就预测近期门户网站会进入这块膏腴之地,“只是没想到他们来得这 么快”。
由于新浪、腾讯等门户网站和千橡等社区巨头进入,原本就已有上千家网站的团购市场,这下真要见血了。未来,这场“千网大战”会否重演2005 年、2006年的博客故事,答案几乎是肯定的。
也许最让中小团购网站们伤心的是,从这一刻,不管是哪位大佬能最终执团购牛耳,他们中多数出局已是定数。
巨头入局
7月9日,腾讯商城上线团购频道,并启用了独立域名,成为门户界的率先杀入者。搜狐的爱家团和新浪的团购网站紧随其后,在7月12日同天上线,至此四大门户中做团购者已占其三。
目前来看,巨头网站们都复制的是美国团购网站Groupon的模式——每天一款产品,再加上大大的购买按钮。新浪团上线首单是北京地区的游泳券,团友可以用48元购得原价220元的游泳券,折扣为2.2折。
尽管门户网进入团购动作迅速,但它们初期仍表现出了试水问道的意思——新浪、腾讯均选择先在一地推动业务,前者在北京,后者在深圳,而腾讯团购站则注明上海等地区业务即将开放。
尽管不算高调,但门户网站的介入仍引发了团购业界的高度关注。业内普遍的担忧是,继当年的博客之后,团购成为了“门户标配”,是否会再度引发行业大洗牌。
不过,团购网站对门户入侵似乎并不甚恐惧。
美团网CEO王兴此前曾创办过饭否网,最先在国内推动微博业务,新浪随后推动微博并成就了规模。而现在,王兴转战团购,新浪也随后跟上。这次,王兴颇有信心。
王兴表示,他们的团购业务麻雀虽小,五脏俱全,涉及产品设计、软件开发、商务合作、市场推广、财务、客服等方方面面,门户网站要调动这么多跨部门的资源,效率未必会很高。门户网站的优势是流量大,能很快实现从零到一的起步,但是和美团这样的专业网站相比,接下来的竞争还是在比谁的服务体验好。
“在美团这种模式下,合作商家的接待能力是有限的,并不是人越多越好。如果百度首页挂个团购,那就是浪费,哪个商家也接待不过来。QQ那么巨大的流量,做什么都可以,团购对他们来讲根本就不是核心业务,只是众多QQ会员增值服务中的一项,不见得会投入很多资源,”王兴对《每日经济新闻》评价说。
FtuanCEO林宁也对《每日经济新闻》表示,“谁说团购中,(网站)带来1万人就比1千人好呢?”他认为,门户网线上资讯服务的整合能力很强,但团购要求线上下的整合能力,“这一点上大家的起跑线差距不大。”
千橡互动集团副总裁、糯米网负责人沈博阳则对记者表示,“团购网创办时间前后差不了几个月,不可能产生什么壁垒。”
除门户网外,团购市场的吸引力使得原本就具备较强生活服务信息“落地”能力的分类信息网站也加入进来。此前,58同城网上线了团购网站,而赶集网选择做团购信息导航。
有意思的是,就在上月,赶集网CEO杨浩涌还宣称至少6个月内不会介入这个市场。昨日杨浩涌表示,“尽管刚刚宣称暂不介入,但没几天,产品技术部的员工就找到我,说团购是一件非常有前景的事,很多消费者对此很有兴趣”。于是杨浩涌让他们放手去做,“他们动作很快,一个星期就把团购导航做起来了。”
市场洗牌
“从3月4日美团北京站上线算起,过去的这4个月可以算是国内团购2.0的预选赛,”王兴说。FtuanCEO林宁认为,未来两三个月又将出现一道分水岭。
目前,团购网站已经展开了大浪淘沙的淘汰战,大量小型团购网站死去,而独立发展的团购网站则面临巨大的挑战。
死去的小团购网站中最为典型的是1288。这家只有创办者一个员工的网站甚至连支付手段都不齐备,因运营不利而倒闭。
另一个事实是,在美团网首先在国内复制Groupon后,短短数月内,国内涌出了数百家甚至上千家大大小小的团购网站。
其兴也勃焉,其亡也忽焉。大批中小网站源源不断地出现又死去,源于Groupon模式极简单的操作模式。这种模式复制非常容易,投资门槛也非常低,甚至只需花上数千至两三万元买个开源程序,招一两个员工就可以开张了。但在高竞争压力下,过于简单的配套,遭淘汰也在情理之中。
沈博阳对《每日经济新闻》表示,一家架构完备的团购网站“并不是简单的一张皮”,而有着复杂的后台系统,至少包括编辑系统、帮助商家验券及做用户分析的商家系统以及广告发布系统,“仅这个系统至少需要100万元的投资”。林宁甚至称,在现在竞争激烈的态势下,一家能够生存发展的上规模的团购网站投入门槛在1000万元以上。
在大量小团购网站死去的同时,业内并购也开始兴起。6月,团购网站中已发生了两起颇具规模的并购案,分别是拉手网并下团乐乐,酷团网并下优团网。
林宁称,“最近我接到了不少地方小团购网站的电话,提卖给我们的意向”,团购业即将进入一个资金PK的时期,Ftuan近期也将会公布很大的投融资动作,“目前我们还在投入阶段,每城每月销售额约为100万~150万,年内打算再进入10~15个城市。”
引资机会
值得注意的是,6月两起并购案中出现了泰山天使投资、金沙江创投和浙商创投等风投的身影。由此可见,资本开始对团购网表现出了更明朗的态度。在此之前,金沙江已经投了美团和拉手网。经纬中国创始人张颖也表示,经纬中国“看了很多,目前还在观察中”。
投资界人士认为,经历半年发展之后,半数中小团购网站已死,未来能存活的仅有数家。金沙江创投创始人朱啸虎表示,现在看来目前十名之外的团购网站已经没有机会了。
不过,团购业内也有观点认为,规模大小、覆盖范围以及资金投入未必能够决定一切,如果能够服务好本地商家,就有生存发展的机会。
“以后的局面将可能是少数几家大型团购网站完成全国覆盖,同时部分本地化做强的中小团购网站立足一城一地发展生存”,沈博阳对《每日经济新闻》表示。
在启明创投合伙人童士豪看来,能够提供优良产品服务并与客户良好沟通的团购网站将被看好;此外,他还提及赶集网、大众点评网和58同城网在这一领域有先发的竞争力优势的网站,他对这类企业颇感兴趣。
另一类被看好的则是 “SNS+团购”的模式。清科集团分析师张亚东认为,糯米网的案例反映了团购网站必须具备的一种优势,那就是网络社区。依靠SNS的用户优势,可以充分发挥组团传播效率优势。
沈博阳告诉记者,千橡启动糯米网项目看重的是具有社交化属性的人群在电子商务中凸显的传播效应,目前组建起了产品、技术、销售等20多人的团队。“我们目前还没有硬性导入人人网的SNS用户资源,但这一效应已经开始展现出来了。譬如6月23日团购,原价176元的耀莱国际影城套餐只需40元,相当于2.3折,参与购买的人数高达152151位。
媒介价值
Groupon出现的逻辑是匹配消费者和商家的供需信息,也是为商家消费多余的库存。实际上,传统B2C电子商务在实体商品销售方面已相当成熟,规模巨大,在这种情况下团购网站更适合非标准化、非实物性质的本地化服务商品。
这就决定了团购网站们轻量化的特性——抛却烦躁的实物商品物流配送,追求本地化生活信息服务,产品多数有着现场消费的属性。而且与传统B2C电子商务所追求的实际交易成果不同,Groupon及复制其模式的诸多团购网站的实质更接近一种媒介。
“本地服务业商家是此前最被忽视的群体,而团购对他们而言是最好的推广方式之一,能够24小时在首页曝光是他们梦寐以求的”,沈博阳说,基于实物的团购网站早已有之,如做建材团购起家的篱笆网之类,但这并不是Groupon模式所追求的日常性生活消费,而糯米网上99.9%的商品都是本地服务。林宁则认为,Groupon式的团购网站很大程度上并不像互联网产物,而更像是一种海报。
王兴说得更为明了:“对商家来说,美团是一种前期零投入(不需要先付钱给美团)、完全按效果付费的推广方式,比一般的广告性价比高很多,“这种新的推广方式算不算广告,那只能算是文字游戏了。”
接受记者采访的团购业者多认为,团购是在追求简约化的精品推介,是在信息爆炸的背景下为消费者做选择的减法。“这是做精品消费指南,五花八门大而全的事还是交给淘宝去做吧”,王兴说。
“我们拒掉了90%来提意向的商户”,林宁告诉记者,“问题出在不适合,如很多实物类的商家,每天只有一款产品的推荐资源,我们现在排期已经排到了两个月后了。”
在他看来,目前团购行业的区分度不高,诸多消费者只追逐极限折扣,行业现在需要解决的问题是如何让客户再来,这就需要针对人群、产品的差异化选择,“找到真正有价值、有需求的产品,并掌握人群消费的细分”。而这一切,已经是媒介化的产品制作思路了。
合作新路
除了本地服务型产品,团购网站也在尝试新的合作模式,如与B2C网站合作。
今年3月份,乐淘网成为第一家与团购网站合作的B2C企业。当时在美团网举行的一次团购活动中,成交量为591单。而6月份,乐淘联手返利网举行的团购与美团活动相仿,一天就成功交易了1327单。
“基本完全相同的一个活动,我们6月份的交易量是3月份的2倍还多,可见网民已渐渐接受了这种新的购物方式”,乐淘市场总监崔璨对《每日经济新闻》表示,与美团的合作中,美团向消费者提供80元的券,只需在乐淘上买150元以上的鞋子即可使用,“这就意味着我们的新客成本仅为80元,而我们通常的水平为200元左右,团购网站的效果确实超出了我们之前的想象。”
乐淘网CEO毕胜对记者表示,团购网善于推广,而B2C企业具备前者没有的配送优势,这一合作模式对于B2C企业推广和消费者获取利益均有好处。
同时,媒介价值的凸显也催生了团购产业链上的另一种业态——团购导航站点。这类网站如捏团网、团购之家、团一起等,并不从事实际的团购组织活动,而是在页面上汇集各家团购网站的产品信息以便用户检索。
团购之家CEO王雯吉表示,目前该网站已经覆盖了100多个城市的团购信息,眼下正力图接入SNS网站以获得更大的推广空间,据其称他们已与康盛畅想合作。
同为分类信息网站,与58同城网自己做团购不同,赶集网也选择了做团购导航。对此,杨浩涌解释称,目前团购市场尚不明朗,而导航更注重本地服务信息流,是赶集网的强项。“目前我们还不考虑营收,在跟一些团购网站谈账号互通等合作事宜”。
林宁也告诉记者,腾讯正在和Ftuan谈合作。有业内评论认为,相比直接做团购网站,腾讯基于QQ客户端的庞大用户基数和信息整合能力,做导航可能更有优势。
风投注资国内团购网站的部分案例
5月26日,团购网站24券宣布继2009年9月获得硅谷投资人第一轮天使投资后,再获数百万元人民币的天使投资。同样是5月,由中山大学几名大三学生创办的5151团购网获得了超过2000万元的风险投资。
6月9日,团购网站酷团网宣布获得万嘉创投首轮800万元人民币投资。此前,酷团网已获得浙商创投1000万元人民币投资。
6月17日,国内团购网站拉手网再获500万美元融资。这个上线不到3个月的拉手网此前曾获得泰山天使基金、欧洲团购网站DailyDeal创始人以及金沙江投资500万美元A轮融资。
6月18日,刚刚上线的团购新贵阿丫团经过近一个月的试运营,获得了山西财团1.1亿元的高额投资,成为行业内赢得单笔投资最大的团购网站。
6月23日,国内团购网站F团CEO林宁透露,该网站已获得来自三井创投等企业的C轮融资,融资细节并未披露,但林宁称“是目前为止规模最大的团购网站融资”。
《每日经济新闻》
来源:未知,如有了解,请告知,谢谢
upstream bakend {server 192.168.0.14 weight=10;server 192.168.0.15 weight=10;}
upstream bakend {ip_hash;server 192.168.0.14:88;server 192.168.0.15:80;}
upstream backend {server server1;server server2;fair;}
upstream backend {server squid1:3128;server squid2:3128;hash $request_uri;hash_method crc32;}
upstream bakend{#定义负载均衡设备的Ip及设备 状态ip_hash;server 127.0.0.1:9090 down;server 127.0.0.1:8080 weight=2;server 127.0.0.1:6060;server 127.0.0.1:7070 backup;}
proxy_pass http://bakend/;
来自:http://blog.pfan.cn/fengfei/23026.html
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ /><title>AsJsCall</title><style type=”text/css”>ul{list-style:none; border:dotted; width:350px;};li{padding:5px};</style><script type=”text/javascript”>/********* Start AS Call JS Function ***********************/// 获得在Flash中输入的姓名和性别,并返回显示出来function getNameSexFromAS( strName, strSex ){document.getElementById(“txtNameFromAS”).value = strName;document.getElementById(“txtSexFromAS”).value = strSex;}/********* End AS Call JS Function ***********************//********* Start JS Call AS Function ***********************/// 获得HTML页面中嵌入的Flash文件function thisMovie( movieName ){// 判断是否为IE浏览器var isIE = navigator.appName.indexOf(“Microsoft”) != -1;return (isIE)?window[movieName]:document[movieName];}function callASFunction( strName, strSex ){// 调用AS中的getNameSexFromJS方法thisMovie( “extint” ).getNameSexFromJS( strName, strSex );// 用这句也可以// document.getElementById(“extint”).getNameSexFromJS( strName, strSex );}/********* End JS Call AS Function ***********************/</script></head><body><object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0″id=”extint”width=”300″height=”250″title=”AsJsCall”><param name=”movie” value=”AsJsCall.swf” /><param name=”quality” value=”high” /><embed src=”AsJsCall.swf” quality=”high” pluginspage=”http://www.macromedia.com/go/getflashplayer” type=”application/x-shockwave-flash” width=”300″ height=”250″></embed></object><ul><li>请输入你的姓名ToAS: <input type=”text” id=”txtName” /></li><li>请输入你的性别ToAS: <input type=”text” id=”txtSex” /></li><li><input type=”button” id=”btnGetFromAS” value=”调用AS方法” onclick=”javascript:callASFunction( document.getElementById(‘txtName’).value, document.getElementById(‘txtSex’).value )”/></li></ul><ul><li>显示AS中输入的姓名和性别:</li><li> <input type=”text” id=”txtNameFromAS” /></li><li> <input type=”text” id=”txtSexFromAS” /></li></ul></body></html>
import flash.external.*;/********* Start AS Call JS Function ***********************/// 添加click监听事件btnCallJSFun.addEventListener( “click”, doClick );// 用户单击btnCallJSFun引发click事件,并执行事件处理函数function doClick( eventObj:Object ):Void{//调用JS的getNameSexFromAS方法,后面txtNameToJS.text, txtSexToJS.text为传替的参数ExternalInterface.call( “getNameSexFromAS”, txtNameToJS.text, txtSexToJS.text );};/********* End AS Call JS Function ***********************//********* Start JS Call AS Function ***********************/function getNameSexFromJS( strName:String, strSex:String ):Void{txtName.text = strName;txtSex.text = strSex;}// 注册该getNameSexFromJS方法为JS可以调用的方法// “getNameSexFromJS”为别名,可以随意写ExternalInterface.addCallback( “getNameSexFromJS”, this, getNameSexFromJS )/********* End JS Call AS Function ***********************/
来自:http://www.javaeye.com/topic/147596
前一段一直在用Ext,可是在扩展的时候总是遇到问题,索性看Ext的源码,但是发现有很多createDelegate这个方法、一直不解,最近经高人点播,了解一二。
所属类:Function
createDelegate( [Object obj], [Array args], [Boolean/Number appendArgs] ) :这个函数的目的是创建委托。
功能:什么都不多说了。看例子
Ext.onReady(function(){Ext.QuickTips.init()var myclass=new Object();//myclass并没有alert方法,我们也不打算为它写一个alert方法//我们希望它和window.alert有一样的行为,所以我们委托window来做myclass.alert=window.alert.createDelegate(window);//我们还希望他有个更漂亮的show方法和Ext.MessageBox的show功能一样//所以我们又得委托给Ext.MessageBox来做这事了myclass.show=Ext.MessageBox.show.createDelegate(Ext.MessageBox);//我们的myclass也有alert和show方法了myclass.alert(‘alert1′);myclass.show({title:’title’,msg:’message’});});Ext.onReady(function(){ Ext.QuickTips.init() var myclass=new Object(); //myclass并没有alert方法,我们也不打算为它写一个alert方法 //我们希望它和window.alert有一样的行为,所以我们委托window来做 myclass.alert=window.alert.createDelegate(window); //我们还希望他有个更漂亮的show方法和Ext.MessageBox的show功能一样 //所以我们又得委托给Ext.MessageBox来做这事了 myclass.show=Ext.MessageBox.show.createDelegate(Ext.MessageBox); //我们的myclass也有alert和show方法了 myclass.alert(‘alert1′); myclass.show({title:’title’,msg:’message’}); });
原来就这么简单。