精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

不改代碼就能優(yōu)化ASP.NET網(wǎng)站性能的方法

開(kāi)發(fā) 后端
不改代碼就能優(yōu)化ASP.NET網(wǎng)站性能的方法,它們主要分為二個(gè)方面:1. 利用ASP.NET自身的擴(kuò)展性進(jìn)行優(yōu)化。2. 優(yōu)化IIS設(shè)置。

本文將介紹一些方法用于優(yōu)化ASP.NET網(wǎng)站性能,這些方法都是不需要修改程序代碼的。

它們主要分為二個(gè)方面:

1. 利用ASP.NET自身的擴(kuò)展性進(jìn)行優(yōu)化。

2. 優(yōu)化IIS設(shè)置。

配置OutputCache

用緩存來(lái)優(yōu)化網(wǎng)站性能的方法,估計(jì)是無(wú)人不知的。 ASP.NET提供了HttpRuntime.Cache對(duì)象來(lái)緩存數(shù)據(jù),也提供了OutputCache指令來(lái)緩存整個(gè)頁(yè)面輸出。雖然OutputCache指令使用起來(lái)更方便,也有非常好的效果,不過(guò),它需要我們?cè)谀切╉?yè)面中添加這樣一個(gè)指令。

對(duì)于設(shè)置過(guò)OutputCache的頁(yè)面來(lái)說(shuō),瀏覽器在收到這類頁(yè)面的響應(yīng)后,會(huì)將頁(yè)面響應(yīng)內(nèi)容緩存起來(lái)。只要在指定的緩存時(shí)間之內(nèi),且用戶沒(méi)有強(qiáng)制刷新的操作,那么就根本不會(huì)再次請(qǐng)求服務(wù)端,而對(duì)于來(lái)自其它的瀏覽器發(fā)起的請(qǐng)求,如果緩存頁(yè)已生成,那么就可以直接從緩存中響應(yīng)請(qǐng)求,加快響應(yīng)速度。因此,OutputCache指令對(duì)于性能優(yōu)化來(lái)說(shuō),是很有意義的(除非所有頁(yè)面頁(yè)面都在頻繁更新)。

在網(wǎng)站的優(yōu)化階段,我們可以用Fiddler之類的工具找出一些內(nèi)容幾乎不會(huì)改變的頁(yè)面,給它們?cè)O(shè)置OutputCache,但是,按照傳統(tǒng)的開(kāi)發(fā)流程,我們需要針對(duì)每個(gè)頁(yè)面文件執(zhí)行以下操作:

1. 簽出頁(yè)面文件。

2. 添加OutputCache指令。

3. 重新發(fā)布頁(yè)面。

4. 簽入文件(如果遇到多分支并行,還可能需要合并操作)。

以上這些源代碼管理制度會(huì)讓一個(gè)簡(jiǎn)單的事情復(fù)雜化,那么,有沒(méi)一種更簡(jiǎn)單的方法能解決這個(gè)問(wèn)題呢?

接下來(lái),本文將介紹一種方法,它利用ASP.NET自身的擴(kuò)展性,以配置文件的方式為頁(yè)面設(shè)置OutputCache參數(shù)。配置文件其它就是一個(gè)XML文件,內(nèi)容如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <OutputCache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  3.                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
  4.     <Settings> 
  5.         <Setting Duration="3" FilePath="/Pages/a3.aspx"  /> 
  6.         <Setting Duration="10" FilePath="/Pages/a5.aspx"  /> 
  7.     </Settings> 
  8. </OutputCache> 

看了這段配置,我想您應(yīng)該也能猜到它能有什么作用。

每一行配置參數(shù)為一個(gè)頁(yè)面指定OutputCache所需要的參數(shù),示例文件為了簡(jiǎn)單只使用二個(gè)參數(shù),其它可以支持的參數(shù)請(qǐng)參考OutputCache指令

為了能讓這個(gè)配置文件有效,需要在web.config中配置以下內(nèi)容(適用于IIS7):

  1. <system.webServer> 
  2.     <modules> 
  3.         <add name="SetOutputCacheModule" type="WebSiteOptimize.SetOutputCacheModule, WebSiteOptimize" /> 
  4.     </modules> 
  5. </system.webServer> 

在這里,我注冊(cè)了一個(gè)HttpModule,它的全部代碼如下:

  1. public class SetOutputCacheModule : IHttpModule  
  2. {  
  3.     static SetOutputCacheModule()  
  4.     {  
  5.         // 加載配置文件  
  6.         string xmlFilePath = Path.Combine(HttpRuntime.AppDomainAppPath, "OutputCache.config");  
  7.         ConfigManager.LoadConfig(xmlFilePath);  
  8.     }  
  9.  
  10.     public void Init(HttpApplication app)  
  11.     {  
  12.         app.PreRequestHandlerExecute += new EventHandler(app_PreRequestHandlerExecute);  
  13.     }  
  14.  
  15.     void app_PreRequestHandlerExecute(object sender, EventArgs e)  
  16.     {  
  17.         HttpApplication app = (HttpApplication)sender;  
  18.  
  19.         Dictionary<string, OutputCacheSetting> settings = ConfigManager.Settings;  
  20.         if( settings == null )  
  21.             throw new ConfigurationErrorsException("SetOutputCacheModule加載配置文件失敗。");  
  22.  
  23.         // 實(shí)現(xiàn)方法:  
  24.         // 查找配置參數(shù),如果找到匹配的請(qǐng)求,就設(shè)置OutputCache  
  25.         OutputCacheSetting setting = null;  
  26.         if( settings.TryGetValue(app.Request.FilePath, out setting) ) {  
  27.             setting.SetResponseCache(app.Context);  
  28.         }  
  29.     }  

ConfigManager類用于讀取配置文件,并啟用了文件依賴技術(shù),當(dāng)配置文件更新后,程序會(huì)自動(dòng)重新加載:

  1. internal static class ConfigManager  
  2. {  
  3.     private static readonly string CacheKey = Guid.NewGuid().ToString();  
  4.     private static Exception s_loadConfigException;  
  5.     private static Dictionary<string, OutputCacheSetting> s_settings;  
  6.  
  7.     public static Dictionary<string, OutputCacheSetting> Settings  
  8.     {  
  9.         get{  
  10.             Exception exceptin = s_loadConfigException;  
  11.             if( exceptin != null )  
  12.                 throw exceptin;  
  13.  
  14.             return s_settings;  
  15.         }  
  16.     }  
  17.  
  18.     public static void LoadConfig(string xmlFilePath)  
  19.     {  
  20.         Dictionary<string, OutputCacheSetting> dict = null;  
  21.  
  22.         try {  
  23.             OutputCacheConfig config = XmlHelper.XmlDeserializeFromFile<OutputCacheConfig>(xmlFilePath, Encoding.UTF8);  
  24.             dict = config.Settings.ToDictionary(x => x.FilePath, StringComparer.OrdinalIgnoreCase);  
  25.         }  
  26.         catch( Exception ex ) {  
  27.             s_loadConfigException = new System.Configuration.ConfigurationException(  
  28.                 "初始化SetOutputCacheModule時(shí)發(fā)生異常,請(qǐng)檢查" + xmlFilePath + "文件是否配置正確。", ex);  
  29.         }  
  30.  
  31.  
  32.         if( dict != null ) {  
  33.             // 注冊(cè)緩存移除通知,以便在用戶修改了配置文件后自動(dòng)重新加載。  
  34.  
  35.             // 參考:細(xì)說(shuō) ASP.NET Cache 及其高級(jí)用法  
  36.             //          http://www.cnblogs.com/fish-li/archive/2011/12/27/2304063.html  
  37.             CacheDependency dep = new CacheDependency(xmlFilePath);  
  38.             HttpRuntime.Cache.Insert(CacheKey, xmlFilePath, dep,  
  39.                 Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, CacheRemovedCallback);  
  40.         }  
  41.  
  42.         s_settings = dict;  
  43.     }  
  44.  
  45.     private static void CacheRemovedCallback(string key, object value, CacheItemRemovedReason reason)  
  46.     {  
  47.         string xmlFilePath = (string)value;  
  48.  
  49.         // 由于事件發(fā)生時(shí),文件可能還沒(méi)有完全關(guān)閉,所以只好讓程序稍等。  
  50.         System.Threading.Thread.Sleep(3000);  
  51.  
  52.         // 重新加載配置文件  
  53.         LoadConfig(xmlFilePath);  
  54.     }  
  55. }  

有了AutoSetOutputCacheModule,我們就可以直接使用配置文件為頁(yè)面設(shè)置OutputCache參數(shù),而不需要修改任何頁(yè)面,是不是很容易使用?

說(shuō)明:MyMVC框架已支持這種功能,所有相關(guān)的可以從MyMVC框架的源碼中獲取。

建議:對(duì)于一些很少改變的頁(yè)面,緩存頁(yè)是一種很有效的優(yōu)化方法。

啟用內(nèi)容過(guò)期

每個(gè)網(wǎng)站都會(huì)有一些資源文件(圖片,JS,CSS),這些文件相對(duì)于ASPX頁(yè)面來(lái)說(shuō),它們的輸出內(nèi)容極有可能在一段長(zhǎng)時(shí)間之內(nèi)不會(huì)有變化,而IIS在響應(yīng)這類資源文件時(shí)不會(huì)生成Cache-Control響應(yīng)頭。在這種情況下,瀏覽器或許會(huì)緩存它們,也許會(huì)再次發(fā)起請(qǐng)求(比如重啟后),總之就是緩存行為不受控制且緩存時(shí)間不夠長(zhǎng)久。

有沒(méi)有想過(guò)可以把它們?cè)跒g覽器中長(zhǎng)久緩存起來(lái)呢?

為了告訴瀏覽器將這些文件長(zhǎng)久緩存起來(lái),減少一些無(wú)意義的請(qǐng)求(提高頁(yè)面呈現(xiàn)速度),我們可以在IIS中啟用內(nèi)容過(guò)期,這樣設(shè)置后,IIS就能生成Cache-Control響應(yīng)頭,明確告訴瀏覽器將文件緩存多久。

在IIS6中,這個(gè)參數(shù)很好找到:

然而,在IIS7中,這個(gè)參數(shù)不容易被發(fā)現(xiàn),需要以下操作才能找到:

選擇網(wǎng)站(或者網(wǎng)站子目錄)節(jié)點(diǎn),雙擊【HTTP響應(yīng)標(biāo)頭】

再點(diǎn)擊右邊的【設(shè)置常用標(biāo)頭】鏈接

此時(shí)將會(huì)顯示:

說(shuō)明:【啟用內(nèi)容過(guò)期】這個(gè)設(shè)置可以基于整個(gè)網(wǎng)站,也可以針對(duì)子目錄,或者一個(gè)具體的文件。

注意:如果您在IIS7中針對(duì)某個(gè)子目錄或者文件設(shè)置【啟用內(nèi)容過(guò)期】,前面的對(duì)話框看起來(lái)是一模一樣的,

然而,在IIS6中,我們可以清楚地從對(duì)話框的標(biāo)題欄中知道我們?cè)谧鍪裁矗?/p>

有時(shí)真感覺(jué)IIS7的界面在退步!

最后我想說(shuō)一句:可以直接為整個(gè)網(wǎng)站啟用內(nèi)容過(guò)期,ASPX頁(yè)面是不會(huì)被緩存的!

說(shuō)到這里可能有人會(huì)想:這個(gè)過(guò)期時(shí)間我該設(shè)置多久呢?

十分鐘,2個(gè)小時(shí),一天,還是一個(gè)月?

在我看來(lái),這個(gè)時(shí)間越久越好。

可能有人又會(huì)說(shuō)了:萬(wàn)一我要升級(jí)某個(gè)JS文件怎么辦,時(shí)間設(shè)置久了,用戶怎么更新呢?

如果你問(wèn)我這個(gè)問(wèn)題,我也只能說(shuō)是你的代碼不合理(畢竟你解決不了升級(jí)問(wèn)題),想知道原因的話,請(qǐng)繼續(xù)閱讀。

解決資源文件升級(jí)問(wèn)題

對(duì)于一些規(guī)模不大的網(wǎng)站來(lái)說(shuō),通常會(huì)將資源文件與程序文件一起部署到一個(gè)網(wǎng)站中。

這時(shí)可能會(huì)采用下面的方式來(lái)引用JS或者CSS文件:

  1. <link type="text/css" href="aaaa.css" rel="Stylesheet" />  
  2. <script type="text/javascript" src="bbb.js"></script>  

在這種情況下,如果使用了前面所說(shuō)的【啟用內(nèi)容過(guò)期】方法,那么當(dāng)有JS,CSS文件需要升級(jí)時(shí),由于瀏覽器的緩存還沒(méi)有過(guò)期,所以就不會(huì)請(qǐng)求服務(wù)器,此時(shí)會(huì)使用已緩存的版本,因此可能會(huì)出現(xiàn)各種奇怪的BUG

對(duì)于前面談到的BUG,我認(rèn)為根源在于引用JS,CSS文件的方式有缺陷,那種方法完全沒(méi)有考慮到版本升級(jí)問(wèn)題,正確的方法有二種:

1. 給文件名添加版本號(hào),像jquery那樣,每個(gè)版本一個(gè)文件(jquery-1.4.4.min.js)。

2. 在URL后面添加一個(gè)版本號(hào),讓原先的URL失效。

第一種方法由于每次升級(jí)都產(chǎn)生了一個(gè)新文件,所以不存在緩存問(wèn)題,但是,維護(hù)一大堆文件的成本可能會(huì)比較大,因此我建議采用第二種方法來(lái)解決。

MyMVC的示例代碼中,我使用了下面的方法來(lái)引用這些資源文件:

  1. <%= HtmlExtension.RefCssFileHtml("/css/StyleSheet.css")%>  
  2. <%= HtmlExtension.RefJsFileHtml("/js/MyPage/fish.js")%>  

在頁(yè)面運(yùn)行時(shí),會(huì)產(chǎn)生如下的輸出結(jié)果:

  1. <link type="text/css" rel="Stylesheet" href="/css/StyleSheet.css?_t=634642185820000000" />  
  2. <script type="text/javascript" src="/js/MyPage/fish.js?_t=634642154020000000"></script>  

這二個(gè)工具方法的實(shí)現(xiàn)代碼如下(在MyMVC的示例代碼中):

  1. private static readonly string s_root = HttpRuntime.AppDomainAppPath.TrimEnd('\\');  
  2.  
  3. public static string RefJsFileHtml(string path)  
  4. {  
  5.     string filePath = s_root + path.Replace("/""\\");  
  6.     string version = File.GetLastWriteTimeUtc(filePath).Ticks.ToString();  
  7.     return string.Format("<script type=\"text/javascript\" src=\"{0}?_t={1}\"></script>\r\n", path, version);  
  8. }  
  9.  
  10. public static string RefCssFileHtml(string path)  
  11. {  
  12.     string filePath = s_root + path.Replace("/""\\");  
  13.     string version = File.GetLastWriteTimeUtc(filePath).Ticks.ToString();  
  14.     return string.Format("<link type=\"text/css\" rel=\"Stylesheet\" href=\"{0}?_t={1}\" />\r\n", path, version);  

上面這種獲取文件版本號(hào)的方法,是一種比較簡(jiǎn)單的解決方案。每個(gè)引用的地方在生成HTML代碼時(shí),都會(huì)訪問(wèn)文件的最后修改時(shí)間,這會(huì)給磁盤(pán)帶來(lái)一點(diǎn)讀的開(kāi)銷,如果您擔(dān)心這種實(shí)現(xiàn)方式可能會(huì)給性能帶來(lái)影響,那么也可以增加一個(gè)配置文件的方式來(lái)解決(請(qǐng)自行實(shí)現(xiàn)),例如以下結(jié)構(gòu):

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <ArrayOfFileVersion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  3.                     xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
  4.     <FileVersion FilePath="/js/JScript.js" Version="255324" /> 
  5.     <FileVersion FilePath="/css/StyleSheet.css" Version="2324235" /> 
  6. </ArrayOfFileVersion> 

如果您認(rèn)為這種配置文件需要手工維護(hù),不夠自動(dòng)化,還可以采用程序的方式自動(dòng)在運(yùn)行時(shí)維護(hù)一個(gè)列表,總之,直接引用資源文件的方法是一種直接耦合,會(huì)給文件升級(jí)帶來(lái)麻煩,我們可以通過(guò)一個(gè)外部方法來(lái)解開(kāi)這個(gè)直接耦合(給FileVersion增加一個(gè)屬性還還可以將內(nèi)部地址改成一個(gè)CDN地址)。

啟用壓縮

壓縮響應(yīng)結(jié)果也是常用的網(wǎng)站優(yōu)化方法,由于現(xiàn)在的瀏覽器都已支持壓縮功能,因此,如果在服務(wù)端能壓縮響應(yīng)結(jié)果,對(duì)于網(wǎng)速較慢的用戶來(lái)說(shuō),會(huì)減少很多網(wǎng)絡(luò)傳輸時(shí)間,最終的體驗(yàn)就是網(wǎng)頁(yè)顯示速度變快了!

IIS6雖然提供壓縮的設(shè)置界面,然而配置是基于服務(wù)器級(jí)別的:

注意:這里的【應(yīng)用程序文件】不包括aspx,如果需要壓縮aspx的響應(yīng),需要手工修改x:\WINDOWS\system32\inetsrv\MetaBase.xml文件(參考加大字號(hào)部分):

  1. <IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/gzip" 
  2.         HcCompressionDll="%windir%\system32\inetsrv\gzip.dll" 
  3.         HcCreateFlags="1" 
  4.         HcDoDynamicCompression="TRUE" 
  5.         HcDoOnDemandCompression="TRUE" 
  6.         HcDoStaticCompression="TRUE" 
  7.         HcDynamicCompressionLevel="9" 
  8.         HcFileExtensions="htm  
  9.             html  
  10.             txt  
  11.             js  
  12.             css  
  13.             htc"  
  14.         HcOnDemandCompLevel="10" 
  15.         HcPriority="1" 
  16.         HcScriptFileExtensions="asp  
  17.             exe  
  18.             aspx  
  19.             axd"  
  20.     >  

說(shuō)明:要修改MetaBase.xml,需要停止IIS Admin Service服務(wù)。

在IIS7中,我們可以在服務(wù)器級(jí)別配置壓縮參數(shù):

然后在每個(gè)網(wǎng)站中開(kāi)啟或者關(guān)閉壓縮功能:

說(shuō)明:IIS7中已經(jīng)不再使用MetaBase.xml,所以我們找不到IIS6的那些設(shè)置了。 IIS7壓縮的過(guò)濾條件不再針對(duì)擴(kuò)展名,而是采用了mimeType規(guī)則(保存在applicationHost.config)。根據(jù)IIS7的壓縮規(guī)則,當(dāng)我們啟用動(dòng)態(tài)壓縮后,會(huì)壓縮aspx的響應(yīng)結(jié)果。

二種壓縮方法的差別:

1. 靜態(tài)內(nèi)容壓縮:當(dāng)服務(wù)器在第一次響應(yīng)某個(gè)靜態(tài)文件時(shí),會(huì)生成一個(gè)壓縮后的結(jié)果,并保存到磁盤(pán)中,以便重用。

2. 動(dòng)態(tài)內(nèi)容壓縮:【每次】在響應(yīng)客戶端之前,壓縮響應(yīng)結(jié)果,在內(nèi)存中完成,因此會(huì)給CPU帶來(lái)一些負(fù)擔(dān)。

注意:要不要【啟用動(dòng)態(tài)內(nèi)容壓縮】這個(gè)參數(shù),需要評(píng)估服務(wù)器的CPU是否能以承受(觀察任務(wù)管理器或者查看性能計(jì)數(shù)器)。

刪除無(wú)用的HttpModule

對(duì)一個(gè)網(wǎng)站來(lái)說(shuō),ASP.NET提供的有些HttpMoudle可能并不是需要的,然而,如果你不去手工禁用它們,它們其實(shí)會(huì)一直運(yùn)行。
比如 我 會(huì)禁用下面這些HttpMoudle:

  1. <httpModules> 
  2.     <remove name="Session"/> 
  3.     <remove name="RoleManager"/> 
  4.     <remove name="PassportAuthentication"/> 
  5.     <remove name="Profile"/> 
  6.     <remove name="ServiceModel"/> 
  7. </httpModules> 

對(duì)于使用Forms身份認(rèn)證的網(wǎng)站的來(lái)說(shuō),下面這些HttpModule也是可以禁用的:

  1. <httpModules> 
  2.     <remove name="WindowsAuthentication"/> 
  3.     <remove name="FileAuthorization"/> 
  4. </httpModules> 

其它優(yōu)化選項(xiàng)

優(yōu)化ASP.NET網(wǎng)站是一個(gè)大的話題,除了博客中介紹的這些方法之外,還有以下方法也是可以參考的:

1. 升級(jí)服務(wù)器硬件配置。

2. 使用Windows Server 2008以上版本操作系統(tǒng)(網(wǎng)絡(luò)性能比2003要好)。

3. 優(yōu)化操作系統(tǒng)配置(例如禁用不需要的服務(wù))。

4. 禁用調(diào)試模式。

5. 網(wǎng)站使用專用應(yīng)用程序池。

原文鏈接:http://www.cnblogs.com/fish-li/archive/2012/12/23/2830301.html

【編輯推薦】

  1. ASP.NET MVC3 的一個(gè)OutputCache問(wèn)題
  2. ASP.NET應(yīng)用程序與頁(yè)面生命周期
  3. ASP.NET在線文件管理模塊的設(shè)計(jì)與開(kāi)發(fā)
  4. 各自為政:ASP.NET實(shí)現(xiàn)團(tuán)隊(duì)分工的思考
  5. ASP.NET Web開(kāi)發(fā)框架項(xiàng)目介紹
責(zé)任編輯:張偉 來(lái)源: 博客園
相關(guān)推薦

2011-06-28 15:14:10

ASP.NET性能優(yōu)化

2009-08-04 17:16:16

ASP.NET代碼優(yōu)化

2011-06-15 13:17:36

ASP.NET

2024-06-11 09:00:00

異步編程代碼

2012-03-12 13:54:56

ASP.NET

2011-04-13 13:49:50

ASP.NET網(wǎng)站優(yōu)化

2024-12-05 08:14:41

2018-02-23 13:55:16

ASP.NET性能優(yōu)化技巧

2009-03-25 09:16:23

數(shù)據(jù)庫(kù)優(yōu)化ASP.NET

2009-08-13 15:49:18

ASP.NET性能優(yōu)化

2011-10-19 09:41:15

ASP.NET性能優(yōu)化

2012-05-16 10:24:26

ASP.NET性能優(yōu)化

2009-08-13 16:22:18

ASP.NET性能優(yōu)化

2009-07-29 09:14:36

ASP.NET網(wǎng)站

2009-07-20 17:07:30

提高ASP.NET性能

2011-10-17 09:54:18

ASP.NET性能

2021-05-19 08:04:11

ASP.Net服務(wù)性原則

2011-07-06 08:46:30

2009-07-10 09:39:25

ASP.NET網(wǎng)站性能

2009-07-28 13:26:34

Render方法ASP.NET
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精品处破女学生| 日韩在线不卡一区| 国产系列在线观看| 免费观看成人av| 欧美黑人又粗大| 亚洲一区二区观看| 国产色99精品9i| 欧美体内谢she精2性欧美| 亚洲一二三区在线| 日韩大尺度视频| 涩涩视频在线播放| 国产成人一区二区精品非洲| 亚洲人成五月天| 成人午夜免费在线| 成av人电影在线观看| 国产91丝袜在线18| 国产精品日韩在线一区| 国产午夜精品无码| 68国产成人综合久久精品| 日韩av一区二区在线| 国产三级生活片| 黑人玩欧美人三根一起进| 国产精品久久久久影院| 九9re精品视频在线观看re6 | 97精品国产| 亚洲精品福利免费在线观看| 999久久久精品视频| 在线观看欧美日韩电影| 伊人婷婷欧美激情| 成人一区二区电影| 国产乱码77777777| 亚洲精品人人| 欧美大码xxxx| 日韩欧美www| 91久久久久久久| 国产一卡二卡三卡| 99亚洲精品| 久久91精品国产91久久久| 东方伊人免费在线观看| 牛牛影视久久网| 欧美xxxxx牲另类人与| 99九九99九九九99九他书对| 国产精品无码久久久久| 色噜噜狠狠色综合中国| 99色精品视频| 午夜影院在线观看国产主播| 亚洲午夜激情av| 喜爱夜蒲2在线| 在线观看免费视频你懂的| 国产精品电影一区二区| 日本免费高清不卡| 六十路在线观看| 国产亚洲综合在线| 欧美理论一区二区| 久草在现在线| 日韩高清在线一区| 国产国产精品人在线视| 亚洲影院在线播放| 久久aⅴ国产紧身牛仔裤| 深夜精品寂寞黄网站在线观看| 黄瓜视频污在线观看| 另类在线视频| 欧美日韩高清影院| 污污的视频免费| 国产亚洲高清一区| 精品国免费一区二区三区| 粗大的内捧猛烈进出视频| 在线观看视频一区二区三区| 精品国产凹凸成av人导航| av av在线| 亚州精品视频| 国产亚洲欧美日韩美女| 亚洲一级片在线播放| 国产高清一区二区| 欧美日本亚洲视频| 午夜影院在线看| 日日骚欧美日韩| 国产原创欧美精品| 亚洲av综合色区无码一区爱av| 高清不卡一二三区| 久久久久久欧美精品色一二三四| 萌白酱视频在线| 天堂网一区二区| 国产综合欧美| 茄子视频成人在线| 中文字幕在线播放av| 国内精品国产成人| 精品伊人久久大线蕉色首页| 成人亚洲性情网站www在线观看| 国产精品视频看| 欧美日韩激情四射| 成人亚洲综合天堂| 亚洲女爱视频在线| 视频在线99re| 成人黄色网址| 欧美日韩在线一区| 8x8x成人免费视频| 午夜先锋成人动漫在线| 精品国产一区二区在线| 国产精品成人久久| 免费看日韩精品| 国产精品国产精品| 在线日本视频| 欧美日韩国产区| 亚洲天堂伊人网| 性欧美xxxx免费岛国不卡电影| 久久天天躁狠狠躁老女人| 69成人免费视频| 国产老妇另类xxxxx| 欧洲一区二区日韩在线视频观看免费| 国产在线二区| 欧美午夜在线观看| 国产精品无码网站| 女人香蕉久久**毛片精品| 国产精品mp4| 日本免费一区视频| 亚洲欧美偷拍三级| 我看黄色一级片| 欧美日韩一本| 色综合久久88色综合天天看泰| а中文在线天堂| 波多野结衣在线一区| 一级全黄肉体裸体全过程| 日韩大片欧美大片| 日韩av在线直播| 精品无码av在线| 国产一区在线精品| 国产日韩在线免费| 欧洲一区av| 亚洲成a人片在线观看中文| wwwwwxxxx日本| 久久久全国免费视频| 国产免费久久| 91chinesevideo永久地址| 亚洲av永久无码国产精品久久| 亚洲欧美中日韩| 国产小视频精品| 国产一区二区三区探花| 日本中文字幕久久看| 午夜性色福利影院| 图片区小说区区亚洲影院| 亚洲色图欧美另类| 亚洲国产一区二区三区高清| 成人激情在线播放| 二区在线播放| 777a∨成人精品桃花网| 伊人成人免费视频| 久久久9色精品国产一区二区三区| 国产高清视频一区三区| 国产粉嫩一区二区三区在线观看| 91国产丝袜在线播放| 人妻体内射精一区二区| 久久亚洲色图| 欧洲亚洲一区二区| 国内欧美日韩| 久久精品久久久久久国产 免费| 亚洲一级av毛片| 中文字幕日本不卡| 黑人无套内谢中国美女| 亚洲日本三级| 欧美成人h版在线观看| 国产又黄又猛又爽| 亚洲卡通动漫在线| 亚洲麻豆一区二区三区| 亚洲国产欧美国产综合一区| 国产视频精品网| porn亚洲| 欧美日韩国产经典色站一区二区三区| 一级在线观看视频| 黄网站免费久久| 国产资源第一页| 国产精品x8x8一区二区| 亚州av一区二区| 国产在线观看免费网站| 欧美日韩国产乱码电影| 国产av 一区二区三区| www.日本不卡| 999精品视频在线| 欧美一区高清| 久久青青草原| 狂野欧美性猛交xxxx| 不卡伊人av在线播放| 四虎永久在线观看| 欧美吻胸吃奶大尺度电影| 99久久99久久精品国产| heyzo一本久久综合| 天堂在线资源视频| 欧美日韩福利| 日本一区二区三区视频免费看| 中文成人在线| 午夜精品久久久久久久99热| 成人av一区| 亚洲福利在线观看| 国产精品久久久久久久久久久久久久久久久久 | 九色porny自拍视频在线播放| 日本久久电影网| 日韩激情综合网| 久久久蜜桃精品| 337p日本欧洲亚洲大胆张筱雨| 欧美亚洲免费| 香港三级日本三级a视频| 国产精品欧美三级在线观看| 亚洲一区二区三区四区视频| 第84页国产精品| 欧美日韩成人网| 97最新国自产拍视频在线完整在线看| 精品欧美一区二区三区精品久久| 波多野结衣日韩| 亚洲国产视频一区| 艹b视频在线观看| 影音先锋久久久| 在线视频亚洲自拍| 欧美精品一区二区三区精品| 26uuu久久噜噜噜噜| 国内精品久久久久久野外| 亚洲欧美日韩爽爽影院| 国产成人自拍一区| 91精品欧美福利在线观看| 奴色虐av一区二区三区| 精品日本高清在线播放| 国产第一页在线播放| 亚洲欧美在线视频| 蜜桃久久精品成人无码av| 丝袜亚洲另类丝袜在线| 国产成人一区二区三区别| 欧美xxxx中国| 日韩av电影免费播放| 日本三级久久| 国产在线观看一区| 91麻豆精品国产91久久久久推荐资源| 7777精品伊人久久久大香线蕉经典版下载 | 免费成人进口网站| 激情五月色综合国产精品| 好吊色欧美一区二区三区四区| 亚洲国产精品免费视频| 91在线观看免费| 亚洲视频自拍| 91色精品视频在线| 亚洲二区av| 成人午夜小视频| 日韩在线激情| 亚洲xxxxx电影| 国产激情综合| 3d动漫啪啪精品一区二区免费 | 在线播放国产精品二区一二区四区 | 草美女在线观看| 欧美第一黄色网| 岛国毛片av在线| 91精品国产免费久久久久久| 91破解版在线观看| 97超碰国产精品女人人人爽 | 魔女鞋交玉足榨精调教| 99re6这里只有精品视频在线观看| 中国极品少妇xxxx| 97精品电影院| 蜜桃久久精品成人无码av| 国产精品久久久久影视| 国产中文av在线| 亚洲免费看黄网站| 国产无码精品一区二区| 欧美色道久久88综合亚洲精品| www毛片com| 欧美日韩国产综合一区二区三区 | 国产精品系列在线播放| 中文字幕视频观看| 久久麻豆一区二区| 欧美成人乱码一二三四区免费| 麻豆国产欧美日韩综合精品二区 | 草b视频在线观看| 精品国产乱码| 亚洲欧美精品在线观看| 欧美1区2区视频| 国产白丝袜美女久久久久| 久久久精品五月天| 中文字幕在线观看日| 国产jzjzjz丝袜老师水多| 亚洲综合在线视频| 中文字幕激情小说| 欧美日韩高清一区二区不卡| av官网在线观看| 日韩av在线播放资源| 成人精品一区二区三区校园激情| 久久久精品国产| 欧美a级在线观看| 国产精品一区二区三区成人| 日本一区二区三区播放| 麻豆视频成人| 一区二区电影在线观看| 国产美女三级视频| 经典一区二区三区| 亚洲天堂成人av| 中文字幕视频一区| 日韩少妇裸体做爰视频| 欧美日韩视频一区二区| 高清国产mv在线观看| 亚洲午夜精品久久久久久久久久久久| wwwav在线| 国产成人高清激情视频在线观看| 久久久91麻豆精品国产一区| 乱一区二区三区在线播放| 91精品国产福利在线观看麻豆| 久久久免费视频网站| 国产乱子伦一区二区三区国色天香| 特大黑人巨人吊xxxx| 1024成人网| 无码人妻丰满熟妇奶水区码| 精品国产免费一区二区三区四区 | 国产女同性恋一区二区| 久久久久久久9999| 欧美日韩一级大片网址| 五月天婷婷视频| 欧美精品手机在线| 高清欧美日韩| 欧美日韩在线观看一区| 国产精品二区影院| 中文字幕色网站| 欧美激情综合在线| 日韩欧美成人一区二区三区| 欧美大片顶级少妇| 精品视频在线一区二区| 国产精品黄页免费高清在线观看| 久9re热视频这里只有精品| 四虎永久免费网站| 奇米色一区二区| 91网站免费视频| 欧美日韩午夜激情| 刘亦菲毛片一区二区三区| 美女av一区二区三区| 日韩有码欧美| 一区二区精品在线观看| 免费在线观看精品| 久久亚洲AV无码专区成人国产| 精品久久久国产精品999| 黄色av小说在线观看| 久久夜色精品亚洲噜噜国产mv| 欧美爱爱视频| 亚洲第一在线综合在线| 日韩国产欧美三级| xxxx日本黄色| 91国偷自产一区二区三区成为亚洲经典| 瑟瑟在线观看| 啪一啪鲁一鲁2019在线视频| 欧美一区免费看| 不卡视频在线看| 欧美日韩一级在线观看| 一区二区三区四区激情| 97久久人国产精品婷婷| www国产亚洲精品久久网站| 九九热这里有精品| 一区二区三区在线视频111| 久久精品国产在热久久| 男女男精品视频网站| 欧美久久免费观看| 91在线中文| 国产精品毛片va一区二区三区| 国产精品mm| 欧洲一级黄色片| 91福利精品第一导航| 国产youjizz在线| 国产日本欧美在线观看| 永久91嫩草亚洲精品人人| 欧美熟妇精品一区二区| 午夜精品久久久久久久99水蜜桃| 天天射,天天干| 国产成人免费av电影| 日韩一区二区三区免费播放| 国产色视频在线播放| 亚洲免费观看在线视频| 无码精品黑人一区二区三区| 2018日韩中文字幕| 久久99高清| 日本人69视频| 亚洲一区二区三区精品在线| 神马久久高清| 国产精品欧美一区二区三区奶水| 香蕉av一区二区| 美女伦理水蜜桃4| 色网综合在线观看| 久久精品视频免费看| 国产精品久久精品视| 玖玖在线精品| 国产乱国产乱老熟300| 日韩不卡中文字幕| 久久精品嫩草影院| 国产96在线 | 亚洲| 国产精品视频麻豆| 免费看国产片在线观看| 国产精品久久久久久久久久新婚| 综合在线视频| 超碰97人人干| 日韩一级免费观看| 免费成人直播| 国产av熟女一区二区三区 | 久久伊人资源站| 美女精品一区二区| 国产真实的和子乱拍在线观看| 亚洲一级一级97网| 日韩中文字幕| 亚洲欧美自偷自拍另类| 岛国精品视频在线播放|