好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > ASP.NET 性能優化之反向代理緩存使用介紹

ASP.NET 性能優化之反向代理緩存使用介紹

熱門標簽:溫州外呼系統招商 400電話個人能不能辦理 合肥ai電銷機器人費用 銀行信貸電話機器人 天津電銷外呼系統違法嗎 凱立德地鐵站地圖標注 滄州電銷外呼系統價格 手機外呼系統什么原理 上海400客服電話怎么申請

到目前為止,我們討論了把緩存存放在ASP.NET的輸出緩存中(內存和硬盤),以及瀏覽器緩存中,而大型站點的另一種常用做法是將緩存部署在反向代理服務器上,這類緩存我們通常稱之為反向代理緩存,比如Squid和Varnish。這兩款軟件通常都部署在非WINDOWS平臺上,對于Windows平臺上的Asp.net來說,其實一樣能使用,我們完全可以把反向代理軟件部署在LINUX上,然后代理會路由到后臺的WINDOWS WEB(IIS)服務器。總之,非WINDOWS的世界很精彩。

當然,無論是squid還是varnish都有Windows的擴展版本。本文為了簡便起見,基于varnish的Windows版本來描述的。

varnish的官方站點:https://www.varnish-cache.org/,

varnish的Windows版本:http://www.cygwin.com/,如果要編譯過的直接可用的版本,在這里:http://www.software112.com/products/cygwin-varnish-cache.html。
1:將varnish配置為IIS的代理
首先需要為varnish準備配置文件,比如,可以為default.vcl,內容如下:

復制代碼 代碼如下:

backend default
{
.host = "192.168.0.77";
.port = "80";
}
sub vcl_fetch
{
remove beresp.http.Set-Cookie;
}
sub vcl_recv
{
remove req.http.Cookie;
}

在我們要示范的這個實例中,這3個配置都不能少,如下,
backend default:指定我們的IIS站點的地址和端口;
sub vcl_fetch:這是一個varnish函數,它varnish從后端服務器,也就是IIS中獲得數據后被調用;
sub vcl_recv:varnish函數,表示客戶端請求杠杠到達反向代理服務器時被調用;
由于varnish默認在碰到http頭中含有Cookie相關標識時直接忽略緩存,所以我們需要上面的兩個函數針對Cookie做特殊處理。當然,目前這兩個函數只是簡單而野蠻的刪除標識,實際的應用中我們可能需要根據實際情況為它們加上一些判斷條件。
2:啟動varnish
下面的命令為我啟動varnish:
C:\varnish\bin>varnishd -a :8011 -T :8088 -f c:/varnish/etc/default.vcl -s file,c:/varnish/var/cache,100M
-a:8011表示,讓varnish監聽在8011端口。由于我測試環境下varnish和iis是在同一臺機器上,所以IIS已經占用了80,我這里只有使用其它端口。
-T是為varnish指定一個管理端口;
-f指定所要使用的配置文件;
后面的參數只是讓varnish使用文件緩存,大小為100M,當然,應該根據實際情況指定大小;
啟動varnish后,如果我們請求http://地址:端口/,就可以等到200OK狀態碼,那表示varnish已經在正確滴接受請求。
3:一個實例
創建asp.net頁面,內容如下:
復制代碼 代碼如下:

protected void Page_Load(object sender, EventArgs e)
{
this.Response.AddHeader("Cache-Control", "max-age=60");
this.Response.AddHeader("Last-Modified", DateTime.Now.ToString("U", DateTimeFormatInfo.InvariantInfo));
DateTime IfModifiedSince;
if (DateTime.TryParse(this.Request.Headers.Get("If-Modified-Since"), out IfModifiedSince))
{
if ((DateTime.Now - IfModifiedSince.AddHours(8)).Seconds 60)
{
Response.Status = "304 Not Modified";
Response.StatusCode = 304;
return;
}
}
string conn = "Data Source=192.168.0.77;Initial Catalog=luminjidb;User Id=sa;Password=sa;";
using (DataSet ds = Common.SqlHelper.ExecuteDataset(conn, CommandType.Text, "select top 1* from NameTb a, DepTb b where a.DepID = b.ID ORDER BY NEWID()"))
{
var result = ds.Tables[0].Rows[0]["name"].ToString();
Response.Write(result);
}
}

對該頁面進行壓力測試,100個用戶,1000個請求,得到的結果如下:

image

如果沒有緩存,則結果如下:

image

可以看到吞吐率有非常大的提升。

4:監控varnish

可以使用varnishstat命令,對varnish進行監控,在上面的壓力測試中,如果我們使用監控,得到的結果如下:

image
在本例中,我們可以看到共請求了1000次,其中999次命中緩存,那是因為第一次顯然肯定是要從IIS中拿輸出滴。
5:管理varnish
可以通過多種途徑來進行varnish的管理,包括更改配置、停止服務、啟動服務、清理緩存等。可以通過varnishadm命令進行管理,如果你是在遠程的話,可以使用telnet來進行管理:
telnet 192.168.0.77 8088
其中8088就是我們剛在啟動varnish的時候指定的管理端口。連接上之后,stop停止服務、start啟動服務,可以敲入help查看所有命令。下面的命令,清除所有緩存:
purge.url *$
6:謹慎引入varnish后帶來的緩存變化
引入varnish后,可以發現使用強制刷新(ctrl+R5)后,動態行為發生了改變,即客戶端瀏覽器會去VARNISH上請求數據,但是此時的緩存中已經存在靜態的緩存內容,varnish會首先根據請求的HTTP頭去和這個緩存內容判斷得出需要是否更新,即由于緩存內容的存在,請求不會去IIS上進行緩存協商。這個時候,緩存中的靜態內容會直接返回給客戶端瀏覽器,這樣一來的話,我們在Page_Load中的代碼就根本不會執行,因為它是在IIS中的。
要避免這種情況的發生,我們必須更改VARNISH配置文件,讓VARNISH碰到強制更新的時候,忽略緩存,直接去IIS上請求,為配置文件增加如下函數:

復制代碼 代碼如下:

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);
}

經過上面的修改后,再次使用強制更新varnish將會忽略緩存,到IIS上去拿正文。
參考:
https://www.varnish-cache.org/docs/trunk/reference/varnishlog.html
https://www.varnish-cache.org/trac/wiki/Introduction#TheVarnishConfigurationLanguage
http://www.docunext.com/wiki/Varnish
http://cd34.com/blog/infrastructure/no-esi-processing-first-char-not/

您可能感興趣的文章:
  • Nginx 反向代理并緩存及緩存清除的方法
  • 詳解Nginx 反向代理、負載均衡、頁面緩存、URL重寫及讀寫分離詳解
  • Nginx服務器作反向代理時的緩存配置要點解析
  • C#實現可緩存網頁到本地的反向代理工具實例
  • linux下通過Squid反向代理搭建CDN緩存服務器的配置方法
  • 使用Nginx反向代理與proxy_cache緩存搭建CDN服務器的配置方法
  • 反向代理緩存的詳細介紹

標簽:白城 溫州 赤峰 金華 洛陽 酒泉 七臺河 怒江

巨人網絡通訊聲明:本文標題《ASP.NET 性能優化之反向代理緩存使用介紹》,本文關鍵詞  ASP.NET,性能,優化,之,反向,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET 性能優化之反向代理緩存使用介紹》相關的同類信息!
  • 本頁收集關于ASP.NET 性能優化之反向代理緩存使用介紹的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 竹菊影视免费观看性情视频| 日韩毛片大全免费高清| 精品国产污污免费网站京东| 女人高潮抽搐潮喷A片| 岛国电影亚洲版| 亚洲一级特黄特黄的大片| 右手影院免费看电影| 羞羞漫画秋蝉| 国产精品秋霞一级鲁丝片| 国产色情又大又粗又黄的短片| 女人19毛片水真多免费视频| 年轻的女教师2在线播放| 又粗又大又黄A片免费看久久久 | 范冰冰被强扒裤衩胸罩视频| free性video另类重口| 波多野结衣全部电影作品大全| 三级三级三级三级33| 新婚大ying乱小说| 国产一线二线三线女装品牌大全| 国产精品久久久久影院老司| 有人有片的观看免费视频| 国产福利在线播放| 欧美色资源| 波多野结衣家庭教| 曰本Av高潮潮喷无码影视91| 好紧好爽好湿好硬免费视频| 秘密的女人| 大乳boobs巨大吃乳| 激情四射床戏| 8?8?永久华人国产| 国精产品一区一区三区潘金莲| 小可的奶水全文免费| 娇妻圆我绿帽瘾| 宝宝下面都湿透了还嘴硬疼| 成人黄色电影在线观看| 爱8影视| 免费看片的黄色软件| 夫の前で人妻波多野结衣| 国产伦精品一区二区三区| 综合久久久久| 手机av在线播放|