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

利用GWT開發(fā)高性能Ajax應(yīng)用

開發(fā) 前端
GWT(Google Web Toolkit) 是 Google 最近推出的一個開發(fā) Ajax 應(yīng)用的框架,它支持用 Java 開發(fā)和調(diào)試 Ajax 應(yīng)用,本文主要介紹如何利用 GWT 進(jìn)行 Ajax 的開發(fā)。Ajax技術(shù)是當(dāng)前開發(fā)web應(yīng)用的非常熱門的技術(shù),也是Web 2.0的一個重要的組成部分。本文講述的是如何利用GWT開發(fā)高性能Ajax應(yīng)用。

對性能的提升是Ajax受歡迎的主要原因。我們通常以為那些所謂的眩目變換對于用戶來說是Ajax最吸引人的地方,可能用戶也確實(shí)由于這個原因而對 Ajax獨(dú)有情鐘。如果你回頭去看那些傳統(tǒng)的web應(yīng)用,會發(fā)現(xiàn)它們幾乎靜態(tài)到令人反感,所以說用戶僅僅出于這些眩目變換而選擇Ajax不無道理。然而, 如果說眩目的變換真得大大改善了用戶體驗(yàn)的話,那么動態(tài)的gif圖片應(yīng)該受到更廣泛的應(yīng)用才是。謝天謝地,Web應(yīng)用早已走過這種幼稚的時代。Ajax不 會再重復(fù)動態(tài)gif圖片的老路,它不會再把重點(diǎn)放在這類眩目的變換上了。因此,無論人們是否感受或是意識到,Ajax真正改善用戶體驗(yàn)的地方還是在對性能 的提升上。

這篇文章的重點(diǎn)并非要說明Ajax天生在哪些方面比傳統(tǒng)Web應(yīng)用優(yōu)秀。關(guān)于這個問題,只要將Google地圖與其他Web地圖或者將Gmail與 Hotmail進(jìn)行對比,自然就可以得出結(jié)論。當(dāng)然,應(yīng)用Ajax的確能顯著改善性能和用戶體驗(yàn)。但在此,我要向大家展示的是如何將Ajax應(yīng)用的性能提 高到一個新的層次——從而使您的應(yīng)用脫穎而出。

選擇GWT的理由

Google Web Toolkit (GWT)將Ajax的開發(fā)推進(jìn)了一大步,然而面對當(dāng)下種類繁多的Ajax解決方案,此類新技術(shù)的推廣難免遇到種種挑戰(zhàn)。但無可否認(rèn),在Ajax開發(fā)方 面,GWT給開發(fā)者提供了其他解決方案無可比擬的便利。如果你還沒有受到任何開發(fā)框架束縛的話,實(shí)在沒有什么理由不選擇GWT,因?yàn)镚WT能夠無償?shù)氖箲?yīng) 用的整體性能得到大幅度提升。

我所說的“無償”是指在開發(fā)中可以拋開性能問題不考慮,而將主要精力集中在業(yè)務(wù)邏輯方面,因?yàn)镚WT本身已能使性能得到優(yōu)化。GWT帶有一個能將 Java代碼編譯成JavaScript的編譯器。如果熟悉編譯語言(C、Java等等)的話,你一定了解平臺獨(dú)立性是此類語言追求的一個目標(biāo),因此其編 譯器能夠針對特定平臺對代碼進(jìn)行優(yōu)化,這樣程序員就可以將重點(diǎn)放在代碼的結(jié)構(gòu)組織和可讀性上。GWT編譯器也做了類似的事情,它將Java代碼編譯成一些 高度優(yōu)化的JavaScript文件,每個文件對應(yīng)于一種特定的瀏覽器,其中的優(yōu)化步驟還應(yīng)用了普通編譯器中的優(yōu)化方法,去掉了沒有被調(diào)用的函數(shù)和內(nèi)聯(lián)代 碼。此種方式得到的代碼相對直接編寫的JavaScript代碼要小的多而且做到了瀏覽器獨(dú)立,因此執(zhí)行效率較高。實(shí)質(zhì)上GWT已將JavaScript 看作web中的匯編代碼來處理。在瀏覽器加載JavaScript代碼的時候,僅僅加載針對該瀏覽器所需的代碼而已。使用GWT的應(yīng)用比任何直接用 JavaScript實(shí)現(xiàn)的應(yīng)用要來得更精煉更快。對即將發(fā)布的GWT 1.5版本,GWT開發(fā)團(tuán)隊(duì)堅(jiān)信其編譯器生成的代碼會比其他任何手工編寫的代碼都要快。以上這些應(yīng)該足以說服大家選用GWT作為Ajax的解決方案,如果 還不夠,還有許多其他充分的理由,比如你可以在開發(fā)GWT程序時應(yīng)用某些Java開發(fā)工具(能用Eclipse來調(diào)試Ajax程序在我看來確實(shí)是一個非常 有分量的砝碼)。

錦上添花

還遠(yuǎn)不止這些呢!Ajax已經(jīng)比傳統(tǒng)web應(yīng)用要出色得多,而GWT又遠(yuǎn)超一般的Ajax技術(shù)。只簡單地做些技術(shù)決定就能讓你將大部分精力放在業(yè)務(wù) 功能上,達(dá)到事半功倍的效果,開發(fā)出完美的應(yīng)用。當(dāng)然,GWT并非憑空就能做到這些,下面我將講述幾種進(jìn)一步提升GWT性能方法。

1. 始終做好緩存

當(dāng)你將GWT的Java代碼編譯成JavaScript后,對應(yīng)于每個瀏覽器版本都會有生成一個相應(yīng)的文件,該文件采用唯一標(biāo)識的文件名。這些就是 你的應(yīng)用程序的代碼文件,直接把它們放到一個web服務(wù)器上就能發(fā)布你的應(yīng)用了。由于文件名是通過對你的代碼進(jìn)行Hash函數(shù)計(jì)算而得,所以文件名本身就 已包含了版本信息。如果你修改了代碼后重新編譯,生成的文件會有新的文件名。這意味著要么文件已經(jīng)被下載到了本地瀏覽器,要么從來沒有被請求過,因此就沒 有必要用檢查文件修改日期(HTTP的If-Modified-Since頭)的方法來決定是否需要版本更新。這樣可以減少很多不必要的HTTP請求過 程,雖然這些請求過程單獨(dú)可能很微不足道,但是當(dāng)用戶量達(dá)到一定程度,它們就會變成不得不考慮的因素。這類請求對客戶端來說也是一種拖累,因?yàn)閷ν粋€應(yīng) 用,每個瀏覽器最多只能有兩個活動的請求。很多對Ajax下載時間的優(yōu)化都是從減少向服務(wù)器發(fā)送的請求量入手的。

為了避免瀏覽器對版本的請求,你可以通過配置web服務(wù)器來向客戶端發(fā)送Expires HTTP頭。這個Expires HTTP頭包含頁面過期的時間,這樣就可以避免瀏覽器在頁面過期時間之前發(fā)送版本檢查的請求。在Apache中設(shè)置這些非常容易,只需要將以下內(nèi)容加入 到.htaccess文件即可:

ExpiresDefault "now plus 1 year"

Apache會給所有符合*.cache.*模式的文件加上expires頭,設(shè)置其失效日期為一年后,此模式將匹配所有GWT應(yīng)用文件。如果你使 用的是Tomcat,也可直接通過servlet過濾器來添加頭部。增加一個servlet過濾器非常簡單,只需要在WEB_INF/web.xml文件 中添加此過濾器的聲明,例如:

CacheFilter
  com.rdews.cms.filters.CacheFilter
  CacheFilter
  /gwt/*

這樣tomcat就知道在哪里找到此過濾器、知道哪些文件可以通過該過濾器。本例中,/gwt/*模式表示gwt文件夾下的所有文件。這個過濾器的 實(shí)現(xiàn)類將通過doFilter方法來添加Expires頭。對GWT應(yīng)用來說,我們需要在每個不符合*.nocache.*模式的文件里添加此 Expires頭。nocache文件是不需要緩存的,因?yàn)槠渲泻邪姹具x擇的邏輯。以下是這個過濾器的實(shí)現(xiàn)代碼:

public class CacheFilter implements Filter {
 	private FilterConfig filterConfig;

 	public void doFilter( ServletRequest request, ServletResponse response,
 			FilterChain filterChain) throws IOException, ServletException {

 		HttpServletRequest httpRequest = (HttpServletRequest)request;

 		String requestURI = httpRequest.getRequestURI();
 		if( !requestURI.contains(".nocache.") ){
 			long today = new Date().getTime();
 			HttpServletResponse httpResponse = (HttpServletResponse)response;
 			httpResponse.setDateHeader("Expires", today+31536000000L);
 		}
 		filterChain.doFilter(request, response);

 	}

 	public void init(FilterConfig filterConfig) throws ServletException {
 		this.filterConfig = filterConfig;
 	}

 	public void destroy() {
 		this.filterConfig = null;
 	}
}

2. 程序壓縮

通過去掉未被調(diào)用的方法和艱澀的代碼、使用簡短的變量名和方法名等方式,GWT編譯器在減少代碼量方面表現(xiàn)得非常出色,但是最后得到的代碼文本仍然 是未經(jīng)壓縮的。因此可以通過gzip壓縮需要部署的應(yīng)用程序的方法進(jìn)一步減小代碼文件的大小。gzip可以將應(yīng)用程序壓縮到原來的70%左右,從而提高應(yīng) 用的下載速度。

幸運(yùn)的是,文件壓縮也可以簡單地通過配置服務(wù)器來實(shí)現(xiàn),唯一要做的只是在Apache服務(wù)器的.htaccess文件中加上以下語句:

SetOutputFilter DEFLATE

Apache首先會自動與瀏覽器進(jìn)行溝通,根據(jù)瀏覽器的支持情況從而決定是否發(fā)送壓縮版本,不過目前所有主流瀏覽器都支持gzip壓縮。

如果使用的是Tomcat,那么可以直接利用server.xml文件中Connector元素,只要加上以下的屬性就可以進(jìn)行程序文件的壓縮了:

compression="on"

#p#

3. 圖片打包

Ajax應(yīng)用借助于瀏覽器和HTTP協(xié)議強(qiáng)大的分布力量,然而瀏覽器和HTTP協(xié)議本身對分布Ajax應(yīng)用沒有特別的優(yōu)化。Ajax應(yīng)用是需要部署 的,在這一點(diǎn)上它跟桌面應(yīng)用程序有些相象,而傳統(tǒng)的web程序使用的是共享資源分布模型(shared resource distribution model),在程序運(yùn)行過程中瀏覽器和服務(wù)器間會不斷進(jìn)行交互,從而對頁面所需要的資源進(jìn)行管理。這種方式使資源能夠在頁面間共享和緩存,從而保證打開 新頁面所需的下載量達(dá)到最小化。在Ajax應(yīng)用中,資源一般不會分布在頁面間,因此不需要單獨(dú)對其進(jìn)行下載緩存。不過,對于Ajax應(yīng)用,在下載應(yīng)用程序 資源時采用傳統(tǒng)的分布式模型也并非不可行,許多Ajax應(yīng)用也正是這么做的。

然而,你可以選擇將程序中用到的所有圖片合并到一個文件中,以減少HTTP請求的次數(shù)。這樣可以突破同一時間只能發(fā)送兩個請求的限制,一次性地下載所有圖片。

GWT從1.4版本開始支持ImageBundle接口。在這個接口中可以為每一個圖片建立一個方法,編譯器會將所有的圖片組合到一個文件中,并將 圖片數(shù)據(jù)的Hash做為新文件的文件名(象程序代碼一樣永久緩存這個文件)。一次性打包合并的圖片數(shù)量是沒有限制的,所有這些圖片只需要一次請求就可以全 部下載。

在已經(jīng)完成的幾個GWT項(xiàng)目中我一直沿用將基本圖片打包的做法,以下是示例代碼:

public interface Images extends ImageBundle {

  /**
   * @gwt.resource membersm.png
   */
  AbstractImagePrototype member();
  /**
   * @gwt.resource away.png
   */
  AbstractImagePrototype away();

  /**
   * @gwt.resource starsm.gif
   */
  AbstractImagePrototype star();

  /**
   * @gwt.resource turn.png
   */
  AbstractImagePrototype turn();

  /**
   * @gwt.resource user_add.png
   */
  AbstractImagePrototype addFavorite();
}

需要注意的是每個方法都有一個公共注解來指明圖片的文件名,方法的返回類型都是AbstractImagePrototype。 AbstractImagePrototype類的createImage方法將返回一個可以在程序接口中使用的圖片widget。以下的代碼揭示了如何 使用該圖片包:

Images images = (Images) GWT.create(Images.class);
mainPanel.add( images.turn().createImage() );

這一切看上去很簡單,不過正是這些看似簡單的東西開啟了GWT性能提升之門。

4. 使用StyleInjector

我們又該如何處理CSS文件以及CSS圖片等應(yīng)用程序資源呢?在傳統(tǒng)的web分布模型中,這些都作為外部資源而被獨(dú)立下載和緩存。在Ajax應(yīng)用 中,這樣做意味著額外的HTTP請求和緩慢的程序加載。目前,GWT對此尚未提供任何優(yōu)化,但在GWT的官方孵化項(xiàng)目中有一些很有意思的GWT代碼,這些 代碼很可能會包含在GWT的未來版本中,其中尤其值得關(guān)注的是ImmutableResourceBundle和StyleInjector兩個類。

ImmutableResourceBundle的功能和ImageBundle很相似,但是它可以用于包括CSS和CSS圖片在內(nèi)的任何類型的資源。這 個類的目的在于為程序資源提供一個抽象,使得處理它們的方式對瀏覽器來說達(dá)到最優(yōu)化。下面這個類即是一個可用于加載CSS文件及其相關(guān)資源的例子:

public interface Resources extends ImmutableResourceBundle {

  /**
   * @gwt.resource main.css
   */
  public TextResource mainCss();

  /**
   * @gwt.resource back.gif
   */
  public DataResource background();

  /**
   * @gwt.resource titlebar.gif
   */
  public DataResource titleBar();
  /**
   * @gwt.resource dialog-header.png
   */
  public DataResource dialogHeader();

}

這個類會為每個資源指定一個文件和方法,這一點(diǎn)和ImageBundle 非常類似,但它的返回類型是DataResource 或TextResource。對于TextResource類,我們可以通過其getText 方法得到指定文件中的內(nèi)容,而對于DataResource類,我們可以用getUrl方法來得到資源的引用(例如對圖片或者IFRAME的引用)。不同 的瀏覽器對這些數(shù)據(jù)的加載方式各不相同,但我們無須擔(dān)心這些。大多數(shù)情況下,數(shù)據(jù)會通過使用URL前綴以內(nèi)聯(lián)URL的方式出現(xiàn)。這個類的用途很廣泛,但是 最直接的應(yīng)用可能還是將CSS與其他程序文件一塊打包使用。

可以注意到,在這個接口中引用了一個CSS文件及其一些圖片。在這種情況下,該接口被拿來將CSS及其圖片與程序文件進(jìn)行打包,從而減少HTTP請 求的次數(shù)和縮短應(yīng)用啟動時間。在CSS文件中一般會指定一些背景圖片,但會使用占位符(placeholder)來取代真實(shí)的圖片URL。這些占位符被用 來引用打包的文件中其他一些元素,尤其是圖片。例如,main.css文件有這樣一個名為gwt-DialogBox的CSS規(guī)則:

.gwt-DialogBox{ background-image:url('%background%') repeat-x; }

如果要在程序中應(yīng)用此CSS文件和圖片,你需要用到孵化項(xiàng)目中的StyleInjector 類。StyleInjector會將CSS文件中的占位符匹配到打包文件中的特定資源,然后再將CSS文件注入到瀏覽器中供應(yīng)用程序使用。這聽起是挺復(fù) 雜,但實(shí)際使用還是比較方便的,重點(diǎn)是它能改善應(yīng)用的性能。下面這段代碼是使用StyleInjector將CSS從資源包注入到應(yīng)用程序中的一個例子:

Resources resources = (Resources)GWT.create(Resources.class);
StyleInjector.injectStylesheet( resources.mainCss().getText(), resources );

需要注意的是以上這些目前還是孵化項(xiàng)目的一部分,在正式發(fā)布前隨時都有可能做調(diào)整。

結(jié)論

總之,Ajax應(yīng)用相對于傳統(tǒng)web應(yīng)用在使用性上有質(zhì)的飛躍,同時GWT所提供的工具能使你的Ajax性能無償?shù)氐玫酱蠓忍嵘jP(guān)于這一點(diǎn),你可以將GWT mail sample的啟動速度跟其他Ajax應(yīng)用范例做個比較。如果再在傳統(tǒng)web應(yīng)用和Ajax應(yīng)用間在部署差異加以關(guān)注的話,我們還可以進(jìn)一步提高應(yīng)用的性能。對于下一代的Ajax應(yīng)用,我充滿了期待。

【編輯推薦】

  1. 如何使用ASP.NET AJAX訪問Web Services
  2. 使用AJAX擴(kuò)展器自定義控件
  3. AJAX和XmlHttpRequest下的Web開發(fā)
責(zé)任編輯:楊鵬飛 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2012-09-28 10:18:53

IBMdw

2016-08-23 14:37:21

2019-04-08 10:09:04

CPU緩存高性能

2016-11-28 09:19:27

2018-03-26 09:02:54

MongoDB高可用架構(gòu)

2013-09-10 16:16:19

移動網(wǎng)站性能優(yōu)化移動web

2011-06-14 09:27:43

高性能WEB開發(fā)

2023-08-29 15:10:04

持續(xù)性能優(yōu)化開發(fā)

2019-09-19 16:59:04

數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫

2012-10-24 14:53:31

IBMdw

2011-04-18 10:16:30

WEB高性能

2009-12-09 10:29:09

ibmdwGWT

2009-06-03 14:24:12

ibmdwWebSphere

2022-11-11 08:55:29

RoCE技術(shù)應(yīng)用

2011-12-15 13:28:57

2023-10-11 08:13:34

2019-01-02 16:47:46

Golang彈幕

2019-01-02 16:38:37

Golang彈幕

2011-04-19 11:06:03

JavaScriptweb

2010-04-15 16:50:58

Oracle動態(tài)SQL
點(diǎn)贊
收藏

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

久久99伊人| 欧美成年网站| 欧美激情一区二区三区不卡| 国产www精品| 国产精品www爽爽爽| www999久久| 亚洲高清免费在线| 欧美精品v日韩精品v国产精品| 亚洲图片欧美日韩| 欧美69视频| 日韩精品在线电影| 三级a三级三级三级a十八发禁止| 成人高清免费在线| 99re8在线精品视频免费播放| 日本高清不卡的在线| 国产乱子轮xxx农村| 国产精品17p| 欧美中文字幕一区二区三区亚洲| 国风产精品一区二区| 日韩一区二区三区中文字幕| 精品一二三四区| 97人人模人人爽人人喊中文字| 国产18无套直看片| 久久99精品国产自在现线| 欧美四级电影网| 国产色一区二区三区| 国产精品秘入口| 成人97人人超碰人人99| 国产美女91呻吟求| 国产精品久久久免费视频| 国产精品久久久久久久免费观看 | 蜜臀99久久精品久久久久小说| 亚洲澳门在线| 国产一区二区三区丝袜| 风韵丰满熟妇啪啪区老熟熟女| 91精品影视| 亚洲成人免费视频| 超碰97免费观看| 成人免费视频| 2019国产精品| 国产一区二区三区黄| 国产乱人乱偷精品视频| 老司机午夜精品视频| 久久国产精彩视频| 你懂得视频在线观看| 人妖一区二区三区| 精品国产免费视频| 91香蕉国产线在线观看| 国产精品黄色片| 日本高清免费不卡视频| 欧美综合在线播放| 美足av综合网| 一区二区久久久| 五月天色婷婷综合| 日韩伦理在线观看| 国产精品视频你懂的| 欧美久久久久久| 亚洲人成色777777精品音频| 不卡在线观看av| 国产精品我不卡| 精品国产无码一区二区三区| 精品一区二区在线免费观看| 国产精品福利无圣光在线一区| 日韩美一区二区| 国产欧美午夜| 亲子乱一区二区三区电影| 欧美不卡视频在线观看| 日韩视频一区二区三区在线播放免费观看| 欧美日韩第一页| 久久久久无码国产精品| 午夜久久黄色| 久久免费视频在线| 日产欧产va高清| 国产精品主播| 国产成人精品久久二区二区| 一级特黄免费视频| 欧美96一区二区免费视频| 国产精品男女猛烈高潮激情| 国产精品久久久久精| 国产乱人伦偷精品视频不卡| 91沈先生播放一区二区| 空姐吹箫视频大全| 99国产精品国产精品毛片| 精品网站在线看| 韩国三级av在线免费观看| 亚洲国产精品ⅴa在线观看| 影音先锋亚洲视频| 91精品国产综合久久久久久豆腐| 国产精品无圣光一区二区| 午夜啪啪福利视频| 国产美女情趣调教h一区二区| 午夜av一区二区三区| 国产精品涩涩涩视频网站| 国产极品一区| 精品福利在线导航| 人妻一区二区视频| 欧美黄色大片网站| 欧美一级电影久久| 一级黄色片在线看| 成人午夜电影网站| 日产精品久久久一区二区| 免费a级毛片在线播放| 亚洲午夜影视影院在线观看| 成人羞羞国产免费网站| 91精品亚洲一区在线观看| 亚洲国产精品推荐| 日韩欧美黄色网址| 在线成人h网| 国产精品第二页| 国产不卡精品视频| 久久久高清一区二区三区| mm131午夜| 日本综合字幕| 欧美不卡激情三级在线观看| 性猛交娇小69hd| 精品动漫av| 国产女精品视频网站免费| 神马久久久久久久久久| 国产精品视频免费看| 热99这里只有精品| 国产视频网站一区二区三区| 亚洲欧美另类中文字幕| 久久在线视频精品| 精品一区二区三区不卡| 欧美不卡1区2区3区| 神马午夜伦理不卡 | 成人精品动漫| 亚洲国模精品一区| 一起操在线播放| 久久免费黄色| 国产美女精品在线观看| 蜜桃av在线免费观看| 欧美视频在线看| 性感美女一区二区三区| 999精品色在线播放| 日本成人免费在线| 午夜在线观看视频18| 亚洲主播在线播放| 国产精品999.| 久久久久久久久久久久久久久久久久 | 亚洲第一福利视频在线| 在线播放免费视频| 93在线视频精品免费观看| 日本在线精品视频| 日韩欧美亚洲系列| 精品久久久免费| 精品熟女一区二区三区| 国产精品第十页| 91亚洲国产成人精品性色| 69xxxx欧美| 欧美视频在线一区二区三区 | 国产主播性色av福利精品一区| 久久精品国产视频| 在线免费观看一区二区| 国产精品丝袜久久久久久app| 99精品免费在线观看| 日韩欧美天堂| 日本精品久久电影| 人成在线免费视频| 日本高清成人免费播放| 黄色三级生活片| 美国av一区二区| 亚洲一区美女| 国产精品777777在线播放| 精品激情国产视频| 国产熟女一区二区丰满| 亚洲欧美激情插| 成年人看片网站| 红桃视频国产精品| 黄色99视频| 欧美成人h版| 在线播放亚洲激情| 91资源在线视频| 一区二区在线看| 国产精品无码电影| 久久亚洲二区| 一区二区三区的久久的视频| 精品一区二区三区中文字幕视频 | 快she精品国产999| 亚洲成人av动漫| 国产美女亚洲精品7777| 97精品一区二区视频在线观看| 亚洲av激情无码专区在线播放| 日韩欧美精品中文字幕| 特黄一区二区三区| 国产99久久久国产精品潘金| 男女视频网站在线观看| 国产精品免费大片| 成人a在线视频| zzzwww在线看片免费| 亚洲一区二区福利| 99久久精品免费看国产交换| 午夜视频在线观看一区二区三区| 蜜桃精品一区二区| 激情av综合网| 日本午夜激情视频| 成人a'v在线播放| 成人区精品一区二区| 深夜av在线| 久久人人爽亚洲精品天堂| 天天操天天爱天天干| 欧美中文字幕一二三区视频| 欧美成人免费看| 国产日韩欧美a| 人妻互换一二三区激情视频| 日韩制服丝袜av| 日韩国产成人无码av毛片| 少妇一区二区视频| 99国产超薄丝袜足j在线观看| 周于希免费高清在线观看 | 国外成人在线视频网站| 国产一区一一区高清不卡| 欧美日韩国产91| avtt亚洲| 亚洲精品一二区| 成 人 黄 色 片 在线播放| 91国偷自产一区二区三区观看| 一区二区视频免费看| 亚洲国产精品成人综合| 女同毛片一区二区三区| 成人免费精品视频| 亚洲一区二区三区四区精品| 日韩精品一二三| 自慰无码一区二区三区| 欧美日韩少妇| 一级一片免费播放| 日本午夜一区| 欧美日韩国产不卡在线看| 超碰一区二区三区| 成人永久免费| 精品国产亚洲一区二区三区大结局 | 四虎884aa成人精品| 欧美国产精品久久| 欧美老熟妇乱大交xxxxx| 北条麻妃国产九九精品视频| 国产老头和老头xxxx×| 精品在线观看视频| 一区二区在线免费看| 奇米四色…亚洲| 波多野结衣天堂| 视频一区二区国产| 黑鬼大战白妞高潮喷白浆| 一区二区久久| 成人毛片视频网站| 午夜亚洲视频| 日韩精品一区二区三区久久| 国产精品嫩草99av在线| 日本十八禁视频无遮挡| 伊人成人在线| 美女黄色免费看| 欧美日本一区二区高清播放视频| 色狠狠久久av五月综合| 精品免费视频| 欧美在线视频一区二区三区| 色老板在线视频一区二区| 精品无码久久久久久久动漫| 另类在线视频| 国产在线欧美日韩| 亚洲va久久久噜噜噜久久| 精品乱子伦一区二区三区| 波多野结衣一区二区三区免费视频| 高清国产在线一区| 成人资源在线播放| 成人欧美一区二区三区视频xxx| 国产激情一区| 91成人伦理在线电影| 91麻豆精品国产综合久久久| 欧美在线视频观看| 色天使综合视频| 国产精品成人一区二区三区吃奶| 自拍偷自拍亚洲精品被多人伦好爽| 日韩av成人在线观看| 日韩精品三区| 国产精品久久久久久五月尺| 久久久久久久性潮| 成人黄色免费片| 国产精品白丝久久av网站| 国产精品视频免费观看| 色橹橹欧美在线观看视频高清| 国产在线精品一区| 成人激情电影在线| 亚洲综合网中心| 亚洲91视频| 在线观看av的网址| 国自产拍偷拍福利精品免费一| 99在线免费视频观看| 综合国产精品| 好吊妞无缓冲视频观看| 老**午夜毛片一区二区三区 | 日本亚洲一区二区| 爱爱爱爱免费视频| 久久国产生活片100| 26uuu国产| 99re视频精品| 麻豆精品免费视频| 亚洲女与黑人做爰| 国产精品 欧美 日韩| 日韩欧美国产成人| 国产视频第一页| 国产丝袜高跟一区| 黄色片网站在线观看| 97不卡在线视频| 成人精品一区二区三区电影| 国产精品爽爽爽| 国产精品网站在线看| 秋霞久久久久久一区二区| 欧美日韩国产在线观看网站| 妞干网在线播放| 久久久精品午夜少妇| 色噜噜狠狠永久免费| 91在线免费视频观看| 亚洲欧美综合7777色婷婷| 国产精品二三区| 久久久久久91亚洲精品中文字幕| 欧美日韩激情一区二区三区| 成人av无码一区二区三区| 亚洲免费av网址| 91中文在线| 国产精品成人v| 51社区在线成人免费视频| 亚洲亚洲精品三区日韩精品在线视频 | 日本伊人午夜精品| 亚洲av熟女高潮一区二区| 国产欧美视频一区二区三区| 亚洲男人的天堂在线视频| 91麻豆精品国产无毒不卡在线观看 | 色综合久久综合网97色综合| 91在线精品入口| 揄拍成人国产精品视频| 草草在线视频| 91丨九色丨国产在线| 亚洲资源网站| 国产美女无遮挡网站| 国产毛片精品视频| 欧美性生交大片| 色欧美88888久久久久久影院| 亚洲第一页综合| 欧美裸身视频免费观看| 精品久久在线| 欧美不卡在线一区二区三区| 亚洲欧美日韩国产综合精品二区| 先锋资源在线视频| 国产精品嫩草久久久久| 中文字幕一区二区在线视频 | 性xxxxfjsxxxxx欧美| 国产精品免费视频久久久| 欧美精品系列| 国产精品免费观看久久| 国产白丝网站精品污在线入口| 欧美人禽zoz0强交| 欧美精品乱码久久久久久| 三区四区电影在线观看| 国产精品激情av在线播放| 日本一区福利在线| 激情五月开心婷婷| av一本久道久久综合久久鬼色| 久久久久人妻一区精品色欧美| 欧美精品一区二区三区高清aⅴ| caoporn免费在线| 国产精品羞羞答答| 99久久精品费精品国产风间由美| wwwwww.色| 一区在线观看免费| 91丨porny丨在线中文| 日韩小视频在线观看| 国产成人久久精品一区二区三区| 一区二区三区视频| 美女视频网站黄色亚洲| 国产稀缺精品盗摄盗拍| 欧美精品丝袜中出| 日本欧美电影在线观看| 成人在线观看av| 在线日本成人| 韩国三级hd中文字幕| 欧美日韩国产在线播放网站| 最新超碰在线| 国产另类自拍| 国产日韩一区| 国产传媒视频在线 | 国产精品51麻豆cm传媒| 丝袜美腿亚洲一区二区| 中文幕av一区二区三区佐山爱| 一区二区三区四区| 国产成人在线免费观看| 久久高清免费视频| 一区二区日韩精品| 天堂久久一区| 亚洲国产成人精品无码区99| 99久久国产免费看| 免费一级a毛片| 欧美日本啪啪无遮挡网站| 粉嫩久久久久久久极品| 欧美一级片中文字幕| 中文字幕字幕中文在线中不卡视频| 精品国产亚洲av麻豆| 国产v综合ⅴ日韩v欧美大片| 欧美aaaa视频| 国产精品久久不卡| 欧美日韩国产中文| 超碰在线最新网址|