闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳婀遍埀顒傛嚀鐎氼參宕崇壕瀣ㄤ汗闁圭儤鍨归崐鐐差渻閵堝棗鍧婇柛瀣尰濞艰鈹戠€n偀鎷洪梻渚囧亞閸嬫盯鎳熼娑欐珷闁圭虎鍠楅悡娑㈡倶閻愭彃鈷旈柕鍡樺浮閺屽秷顧侀柛鎾卞妿缁辩偤宕卞☉妯硷紱闂佸憡渚楅崢楣冨汲閿旈敮鍋撻崗澶婁壕闂佸憡娲﹂崜娑㈠储閹间焦鍊甸柛蹇擃槸娴滈箖姊洪柅鐐茶嫰婢у鈧娲戦崡鍐差嚕娴犲鏁囨繝褎鍎虫禍鎯归敐鍥┿€婃俊鎻掔墛娣囧﹪顢涘顒佇╅梺缁橆殕瀹€绋款潖濞差亜宸濆┑鐘插€搁~搴ㄦ⒑缁嬫鍎愰柟鍛婄摃椤g偓绻濋姀锝嗙【妞ゆ垵瀚幑銏ゅ幢濞戞瑧鍘介梺瑙勬緲閸氣偓缂併劌顭烽弻宥堫檨闁告挻宀稿畷褰掑垂椤旂偓娈鹃梺鍝勬川閸犳挾寮ч埀顒€鈹戦鏂や緵闁告挻鐩、娆撳幢濞戞瑢鎷洪柣鐘充航閸斿苯鈻嶉幇鐗堢厵闁告垯鍊栫€氾拷 (0) +1 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧湱鈧懓瀚崳纾嬨亹閹烘垹鍊為悷婊冪箻瀵娊鏁冮崒娑氬幈濡炪値鍘介崹鍨濠靛鐓曟繛鍡楃箳缁犳娊鏌嶈閸撴瑧绮诲澶婄?闂侇剙绉寸粻顖炴倵閿濆骸鏋涢悷娆欑畵閹鏁愭惔鈩冪亶闂佺粯鎸诲ú鐔煎蓟瀹ュ鐓涘ù锝呮啞閻忔挸鈹戦悙鑼闁搞劌缍婂﹢浣虹磼缂併垹寮柡鈧潏鈹惧亾濮樼偓瀚� (0) +1 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻闁圭虎鍠楅鏍⒑缁嬫鍎愰柛銊ユ健楠炲啫螖閳ь剟鍩ユ径濞炬瀻閻庯綆鍓涚粣妤佷繆閻愵亜鈧劙寮插⿰鍫熷亗闁跨喓濮撮拑鐔兼煥濠靛棭妲哥紒鐙呯秮閺屻劌鈹戦崱姗堢礊濠碘槅鍋勭€氼喚妲愰幘瀛樺闁告繂瀚烽埀顒€鐭傞弻娑㈠Ω閵壯冪厽閻庢鍠栭…閿嬩繆閹间礁鐓涢柛灞剧煯缁ㄤ粙姊绘担鍛靛綊寮甸鍌滅煓闁硅揪瀵岄弫鍌炴煥閻曞倹瀚� (0) +1
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳婀遍埀顒傛嚀鐎氼參宕崇壕瀣ㄤ汗闁圭儤鍨归崐鐐差渻閵堝棗鍧婇柛瀣尰濞艰鈹戠€n偀鎷洪梻渚囧亞閸嬫盯鎳熼娑欐珷闁圭虎鍠楅悡娑㈡倶閻愭彃鈷旈柕鍡樺浮閺屽秷顧侀柛鎾卞妿缁辩偤宕卞☉妯硷紱闂佸憡渚楅崢楣冨汲閿旈敮鍋撻崗澶婁壕闂佸憡娲﹂崜娑㈠储閹间焦鍊甸柛蹇擃槸娴滈箖姊洪柅鐐茶嫰婢у鈧娲戦崡鍐差嚕娴犲鏁囨繝褎鍎虫禍鎯归敐鍥┿€婃俊鎻掔墛娣囧﹪顢涘顒佇╅梺缁橆殕瀹€绋款潖濞差亜宸濆┑鐘插€搁~搴ㄦ⒑缁嬫鍎愰柟鍛婄摃椤g偓绻濋姀锝嗙【妞ゆ垵瀚幑銏ゅ幢濞戞瑧鍘介梺瑙勬緲閸氣偓缂併劌顭烽弻宥堫檨闁告挻宀稿畷褰掑垂椤旂偓娈鹃梺鍝勬储閸ㄥ綊鎷戦悢鍏肩厪濠㈣泛鐗嗛崝姘舵煟鎼搭喖寮慨濠呮缁棃宕卞Δ鈧瀛樼箾閸喐顥堥柡宀嬬畵瀹曟﹢顢旈崟顒備邯闂備礁鎼惌澶岀礊娴e壊鍤曟い鏇楀亾鐎规洖鐖兼俊鐑藉閻樺崬顥氶梻渚€鈧偛鑻晶鎾煛鐏炲墽銆掗柍褜鍓ㄧ紞鍡涘磻閸涱垯鐒婃い鎾卞灪閻撳啴鏌﹀Ο渚▓婵″弶鎮傞弻宥囨嫚閼碱儷褎銇勯姀鈭忓綊藝鏉堚晝纾奸柕濞垮劘閸嬨垽鏌″畝鈧崰鎰箔閻旂厧鍨傛い鏃傗拡濞煎酣鏌f惔銈庢綈婵炲弶锕㈠畷鏇熺附閺夊棗娲、姘跺焵椤掑嫬钃熼柨鐔哄Т閻掑灚銇勯幒鎴濐仾闁搞倕绉归弻鏇熷緞濞戞艾顕辩紓浣靛妼椤嘲顫忓ú顏勪紶闁告洦鍓欑粣娑㈡⒑缁嬫鍎戦柛瀣ㄥ€涘Λ銏ゆ⒑缂佹ê濮夐柛搴涘€濆畷鎰板垂椤愶絽寮垮┑鈽嗗灣閸樠勭妤e啯鍊垫慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閻樻爠鍥ㄧ厱闁斥晛鍟ㄦ禒锔剧磼椤旂懓澧插ǎ鍥э躬閹瑩顢旈崟銊ヤ壕闁哄稁鍘肩粈澶屾喐韫囨洖鍨濆┑鐘宠壘缁狅綁鏌eΟ鐑樷枙婵☆偅绮撳铏圭矓閸℃顏存繛鍫熸礋閺岋綁骞樼€涙ḿ顦伴梺鍝勭灱閸犳牠寮婚崶顒佹櫇闁逞屽墴閹﹢鏌嗗鍡欏幈闂侀潧鐗嗛幏瀣磿閺冨牊鐓涢悘鐐额嚙閳ь剚绻傞锝夊醇閺囩偟顔囬柟鑲╄ˉ閳ь剙寮跺Ο濠囨⒒閸屾瑧顦﹂柟纰卞亰瀵敻顢楅崒婊呯厯闂佺鎻粻鎴︽偂閳ユ剚鐔嗛悹鍝勫娇閸儱鍑犻幖娣妽閻撴瑩姊洪銊х暠闁哄鍊濋弻宥囨嫚閼碱剛顔婄紓浣介哺閹瑰洤鐣烽幒鎴僵妞ゆ垼妫勬禍鎯ь渻鐎n亜顒㈠┑顖氥偢閺岋紕浠︾拠鎻掑闂佹眹鍊濈粻鏍蓟閿濆憘鐔封枎閹勵唲闂備浇妫勯崯浼村窗閺嶎厼钃熼柨婵嗩槸缁秹鏌涚仦缁㈡畷閻庢碍鐩鐑樻姜閹殿噮妲紓浣割槺閺佹悂骞戦姀鐘斀闁搞儮鏅濋惁鍫ユ⒑缁嬫寧婀扮痪鏉跨Ч閹﹢骞樼紒妯锋嫼闂佸憡绻傜€氼參鏁嶅澶嬬厱婵☆垱浜介崑銏ゆ煃閵夛附顥堢€规洘锕㈤、娆撳床婢诡垰娲﹂悡鏇㈡煙閹佃櫕娅呭┑锛勫帶閳规垿顢欓幆褍骞嬪┑顔硷攻濡炰粙骞冮悜钘夌骇闁圭ǹ瀵掗崬銊╂⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷>>

正在阅读:编写高性能Web应用程序的10个技巧编写高性能Web应用程序的10个技巧

2005-09-01 10:02 出处: 作者:Rob Howard(alpha2002译) 责任编辑:moningfeng

技巧 7——页面输出缓存和代理服务器

  ASP.NET 是你的表示层(或者说应该是);它由页面,用户控件,服务器控件(HttpHandlers and HttpModules)以及它们生成的内容组成。如果你有一个产生输出的 ASP.NET 页面,不管是输出 HTML,XML,图像还是任何其它数据,而且每个请求你都运行这个代码并产生相同的输出,此时最好选择使用页面输出缓存。

  只要在页面顶部添加这一行代码即可:

<%@ Page OutputCache VaryByParams="none" Duration="60" %>

  你可以为此页面有效地产生一次输出并可以在60秒内多次重用它,一到这个时间点,该页面将重新执行并将再次将输出添加到 ASP.NET Cache。这个行为还能用某些低级编程 APIs 来完成。输出缓存有几个可以配置的设置,比如:VaryByParams 属性。VaryByParams 不是必须的,但允许你指定 HTTP GET 或 HTTP POST 参数来改变缓存入口。例如,default.aspx?Report=1 或 default.aspx?Report=2 可以简单地设置 VaryByParam="Report" 来对输出进行缓存。额外的参数被命名并用用分号分隔。

  在使用输出缓存机制时,许多人都不了解 ASP.NET 页还产生一组下游缓存服务器 HTTP 头,比如 Microsoft Internet Security and Acceleration Server 或 Akamai 使用的 HTTP 头。当设置 HTTP 缓存头,文档可以被缓存到这些网络资源,从而响应客户端请求不必返回原服务器。

  然而,使用页面输出缓存并不会使你的应用程序更有效率,但它能通过下游缓存技术缓存文档从而潜在地降低服务器的负载。当然,这只能是异步内容;一旦实施下游缓存,你将无法看到任何请求,也不能实现身份认证来防止对它的存取。

技巧 8——运行 IIS 6.0 (如果仅用于内核缓存)

  如果你不运行 IIS 6.O(Windows Server 2003),那么你将得不到微软 Web 服务器中一些重大的性能改进。在技巧 7 中,我谈到了输出缓存。在 IIS 5.0 中,请求到达 IIS,然后到达 ASP.NET。当使用缓存时,ASP.NET 中的 HttpModule 接受该请求,并从该缓存中返回内容。

  如果你用 IIS 6.0,有一些巧妙的特性叫内核缓存,它不需要将任何代码改成 ASP.NET。当 ASP.NET对请求进行缓存处理,IIS 内核缓存便接收一份缓存数据的拷贝。当请求来自网络驱动器,内核一级的驱动程序(没有到用户模式的上下文转换)接收该请求,如果缓存,则直接用缓存数据响应并完成执行。这意味着当你使用 IIS 内核模式缓存和 ASP.NET 缓存时,你将看到无法置信的性能结果。在开发 Visual Studio 2005 的 ASP.NET 期间,我是负责 ASP.NET 性能的程序经理。开发人员的工作做的真是棒极了,而我基本上每天都在看报告。内核模式缓存结果总是最有趣的。典型的情况是请求/响应往往使网络饱和,但 IIS 的运行仅占 CPU 的百分之五。真令人惊异!当然使用 IIS 6.O 有其它一些原因,但内核模式缓存是显而易见的理由。

技巧 9——使用 Gzip 压缩

  虽然使用 gzip 压缩不是一个必须的服务器性能技巧(因为你可能看到 CUP 的使用率上升了),但它能降低服务器发送字节的数量。从而感觉页面更快,而且减少带宽的占用。其压缩的效果好坏取决于所发送的数据以及客户端浏览器是否支持这种压缩(IIS 只会将数据发送到支持 gzip 的浏览器,比如:IE 6.0 和 Firefox),从而使服务器可以在每秒钟里处理更多的请求。事实上,只要你降低返回数据的数量,便能提高每秒所处理的请求数。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗ù锝堟缁€濠傗攽閻樻彃鈧绱撳杈ㄥ枑闁哄啫鐗勯埀顑跨窔瀵粙顢橀悙鑼垛偓鍨攽閿涘嫬浠х紒顕呭灦瀵偊鎮╃紒妯锋嫼闂備緡鍋嗛崑娑㈡嚐椤栨稒娅犻柟缁㈠枟閻撴瑦銇勯弮鈧娆忈缚閹扮増鐓欑€瑰嫮澧楅崵鍥┾偓瑙勬磸閸斿秶鎹㈠┑瀣<婵炲棙鍔栭埢鏇熺節閻㈤潧啸妞わ綀妫勫嵄闁告稒娼欑壕濠氭煙閹规劦鍤欑紒鐙€鍨堕弻銊╂偆閸屾稑顏�闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏇炲€哥粻鏍煕椤愶絾绀€缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紒鎯у⒔缁垳鎹㈠☉銏犵婵炲棗绻掓禒濂告⒑閸濆嫬顏ラ柛搴f暬楠炲啫顫滈埀顒勫箖濞嗘挸绾ч柛顭戝枤瑜版垵鈹戦悙鑼憼缂侇喖绉堕崚鎺楀箻鐠囪尪鎽曞┑鐐村灟閸╁嫰寮崘顔界叆婵犻潧妫欓ˉ鐘炽亜閿斿搫鍔︽慨濠冩そ瀹曘劍绻濋崘鐐棝闂備胶鎳撻崵鏍箯閿燂拷