亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ASP.NET性能優化之局部緩存分析

2024-07-10 13:24:40
字體:
來源:轉載
供稿:網友
在網站的開發過程中,經常碰到的一類需求場景是:

1:頁面含熱點新聞,熱點新聞部分需要10分鐘更新一次,而整個頁面的其它部分1天內都不會變動;

2:首頁的某個BANNER需要顯式:歡迎***;

上面場景中的1,如果整個頁面的緩存失效都定為10分鐘,則勢必增加性能開銷,所以最好的策略是頁面的不同部分采用不同的緩存失效時長。對于場景2也一樣,我們不應該為了遷就某個BANNER不能應用緩存,就讓整個頁面都不支持緩存。

可以說,如果我們在開發網站過程中的緩存策略是不支持頁面局部緩存的,整個架構就是不合理的。

一:局部緩存常用解決方案

針對上面的需求,有幾類解決方案:

1、Client Side Includes(CSI):通過frame、iframe、 javascript、javacript+ajax等方式將另外一個頁面的內容動態包含進來。像現在流行的jquery等javascript庫對此有較好的支持。

優點:能夠利用瀏覽器客戶端并行處理及裝載的機制;通過瀏覽器緩存機制可以降低網絡傳輸時間,提高性能;計算放在客戶端,能夠降低服務器端壓力

缺點:搜索引擎優化問題;javascript兼容性問題;客戶端緩存可能導致服務器端內容更新后不能及時生效;XSS等安全隱患

2、Server Side Includes(SSI):

優點:SSI技術是通用技術,不受具體語言限制,只需要Web服務器或應用服務器支持即可,Ngnix、Apache、Tomcat、Jboss等對此都有較好的支持

缺點:SSI在語法上不能夠直接包含其他服務器的url(當然也可以通過redirect等來變通實現),因此在需要充分利用緩存及負載均衡的環境下相對不是很靈活。

當然如果不使用單獨的緩存服務器,而是使用Ngnix,利用Ngnix對SSI及Memcached支持,通過NginxHttpSsiModule、 NginxHttpMemcachedModule也可以實現頁面緩存,但與專業的緩存服務器(例如Varnish)相比較,Ngnix作為緩存服務器只適合于中小規模的場合。

3、使用ASP.NET的片段緩存

可以利用用戶控件將頁面分段,在ascx文件中寫入緩存的語句,而不在aspx文件中寫緩存語句,這樣ASP.NET就可以只緩存ascx片斷的輸出了。

缺點:片段緩存不支持Location特性;緩存頁面片段惟一合法的地方是web服務器。這是因為片段緩存在ASP.NET中是新的功能,所以瀏覽器和代理服務器不支持。由于它不是W3C標準,像SQUID和VARNISH這樣的代理服務器也不支持它。

4、Edge Side Includes (ESI):

Edge Side Includes(ESI) 和Server Side Includes(SSI) 和功能類似。SSI需要特殊的文件后綴(shtml,inc)。ESI可以直接通過URI包含遠程服務器文件,ESI更適合用于緩存服務器上,緩存整個頁面或頁面片段,因此ESI特別適合用于緩存。本文要介紹的就是ESI的方式來支持局部緩存。

優點:ESI是一個W3C標準,被當下流行的緩存服務器SQUID,Varnish支持。

二:ESI的ASP.NET實現

本文所要闡述的是ESI局部緩存的實現。主頁面(test1.aspx)前臺:

復制代碼 代碼如下:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication2.aspx.test1" %>
<%@ Import Namespace="System.Globalization" %>
<!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 runat="server">
<title></title>
</head>
<body>
<div>這里是局部緩存</div>
<esi:include src="test2.aspx"/>
<div>局部緩存結束</div>
<%=DateTime.Now.ToString("U", DateTimeFormatInfo.InvariantInfo)%>
</body>
</html>


主頁面的后臺請參看上篇,對主頁面采取了緩存策略,即在頁面中使用esi:include標識。
被包含的頁面(test2.aspx)的前臺:

復制代碼 代碼如下:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test2.aspx.cs" Inherits="WebApplication2.aspx.test2" %>
<%@ Import Namespace="System.Globalization" %>
<div>
局部緩存中的頁面:
<%=DateTime.Now.ToString("U", DateTimeFormatInfo.InvariantInfo)%>
</div>


被包含的頁面的后臺什么也不需要處理,也就是不為它加入任何緩存策略,該頁面是實時的。
VARNISH配置文件如下:

復制代碼 代碼如下:


backend default {
.host = "192.168.0.77";
.port = "80";
}
sub vcl_fetch {
remove beresp.http.Set-Cookie;
if(req.url ~ "test1.aspx") {
esi;
}
if(req.url ~ "test2.aspx"){
return (pass);
}
}
sub vcl_recv {
remove req.http.Cookie;
#remove req.http.Accept-Encoding;
#remove req.http.Vary;
}
sub vcl_hit {
if(req.http.Cache-Control~"no-cache"||req.http.Cache-Control~"max-age=0"||req.http.Pragma~"no-cache"){
set obj.ttl=0s;
return (restart);
}
return (deliver);
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}


上文的vcl_fetch函數中加了兩個判斷,指的是:如果碰到test1.aspx就處理esi標識,如果碰到test2.aspx,就直接忽略讓后臺IIS處理。
值得注意的是,啟動命令中加入了-p選項(這是一個varnish的小問題,請查閱參考,此處不表):
varnishd -a :8011 -T :8088 -f c:/varnish/etc/default.vcl -p esi_syntax=0x1 -s file,c:/varnish/var/cache,100M
三:效果
啟動varnish后,我們發現,對于test2.aspx,由于我們使用了esi對其進行了包含,而test2.aspx又未進行緩存,所以在test1.aspx的緩存有效期內,隨著每一次刷新,test1.aspx的內容沒有變動,但是所包含的test2.aspx區域,會實時刷新。
參考(第一小節大部分來自參考文字):
https://www.varnish-cache.org/trac/ticket/352

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美丰满片xxx777| 亚洲白虎美女被爆操| 久久久久久久久国产精品| 亚洲aⅴ日韩av电影在线观看| 久久久久99精品久久久久| 日本亚洲欧洲色| 清纯唯美亚洲综合| 欧美视频在线视频| 国产精品视频播放| 欧美电影免费观看高清完整| 一夜七次郎国产精品亚洲| 欧美日韩成人免费| 亚洲国产日韩一区| 中文综合在线观看| 久久久久久久久91| 国产成人精品999| 亚洲免费中文字幕| 亚洲欧洲一区二区三区在线观看| 国产欧美欧洲在线观看| 国产亚洲欧洲高清一区| 亚洲国产日韩欧美综合久久| 欧美一级片免费在线| 国产第一区电影| 久久久久久久亚洲精品| 性色av香蕉一区二区| 亚洲成人久久网| 久久国产天堂福利天堂| 日韩精品免费在线视频观看| 岛国av一区二区在线在线观看| 日本不卡视频在线播放| 久久久久久久一区二区三区| 日韩精品在线影院| 久久久亚洲精选| 亚洲午夜国产成人av电影男同| 青青青国产精品一区二区| 亚洲精品www久久久久久广东| 久久免费精品日本久久中文字幕| 91国自产精品中文字幕亚洲| 最近中文字幕mv在线一区二区三区四区| 国产精品美女久久| 国产精品久久久999| 亚洲欧美国产高清va在线播| 97国产精品人人爽人人做| 欧美精品videosex牲欧美| 国产精品免费久久久| 亚洲综合自拍一区| 一区二区在线视频播放| 日韩成人激情在线| 亚洲一区二区三区在线免费观看| 久热精品视频在线| 2018中文字幕一区二区三区| 久久久久免费精品国产| 国产成人综合亚洲| 国外成人在线播放| 日本道色综合久久影院| 日韩精品视频在线免费观看| 久久久久久久999| 久久久精品久久久| 午夜精品一区二区三区在线视| 久久久久久999| 欧洲永久精品大片ww免费漫画| 成人在线视频网站| 成人黄色在线播放| 国产亚洲视频在线| 欧美成人精品激情在线观看| 91色精品视频在线| 成人www视频在线观看| 久久久精品电影| 欧美激情免费看| 97国产真实伦对白精彩视频8| 亚洲精品一区av在线播放| 国产精品69av| 久久免费少妇高潮久久精品99| 久久久国产精品亚洲一区| 最近2019年日本中文免费字幕| 92看片淫黄大片欧美看国产片| 美日韩在线视频| 国产一区二区久久精品| 欧美性感美女h网站在线观看免费| 最近2019年中文视频免费在线观看| 欧美裸体xxxxx| 97精品视频在线观看| 久久久久久av| 欧美色道久久88综合亚洲精品| 欧美成人午夜视频| 日韩中文在线中文网三级| 亚洲人成人99网站| 久久国产精品偷| 亚洲成色777777女色窝| 久久久亚洲欧洲日产国码aⅴ| 久久久久久久香蕉网| 亚洲a在线观看| xxx欧美精品| 亚洲成年人影院在线| 萌白酱国产一区二区| 超碰日本道色综合久久综合| 精品国偷自产在线视频| 欧美国产日韩一区二区三区| 精品亚洲夜色av98在线观看| 日本道色综合久久影院| 亚洲一区二区中文| 91在线观看免费网站| 2024亚洲男人天堂| 亚洲欧美精品一区二区| 黑人与娇小精品av专区| 丝袜亚洲另类欧美重口| 久久九九精品99国产精品| 97在线视频免费观看| 国产精品夜间视频香蕉| 爽爽爽爽爽爽爽成人免费观看| 97在线视频免费播放| 欧美成人性生活| xvideos成人免费中文版| 福利一区福利二区微拍刺激| 国产又爽又黄的激情精品视频| 亚洲精品乱码久久久久久金桔影视| 日韩中文字在线| 亚洲va码欧洲m码| 国产91|九色| 欧美日韩精品国产| 国产在线播放91| 91成人天堂久久成人| 日韩一区二区三区xxxx| 国产精品综合不卡av| 97人人爽人人喊人人模波多| 欧美裸体xxxx| 黄色精品一区二区| 日韩中文字幕不卡视频| 91精品综合视频| 久久精品电影网站| 中日韩美女免费视频网址在线观看| 亚洲欧洲日产国码av系列天堂| 欧美电影在线观看网站| 亚洲最大成人网色| 欧美日韩国产一区二区三区| 日韩福利视频在线观看| 91精品在线国产| 国产精品一区二区三区久久久| 69精品小视频| 97在线精品视频| 欧美日韩一区二区在线播放| 色悠悠久久久久| 久久久久久久久亚洲| 国产一区私人高清影院| 日韩av电影手机在线观看| 91国产视频在线| 亚洲成年人在线播放| 丰满岳妇乱一区二区三区| 久久激情视频免费观看| 91成人国产在线观看| 国产精品 欧美在线| 亚洲在线视频福利| 国模私拍一区二区三区| 亚洲国产欧美精品| 国产精品日韩欧美综合| 中文字幕久热精品视频在线| 久久av在线播放| 在线观看亚洲视频| 亚洲欧美一区二区三区四区| 久久影视电视剧凤归四时歌| 国产狼人综合免费视频| 欧美成人精品在线| 高清欧美性猛交xxxx| 欧美综合一区第一页|