久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

加快JavaScript加載和執行效率

瀏覽:60日期:2023-11-15 10:21:11

JavaScript 在瀏覽器中的性能成為開發者所面臨的最重要的可用性問題。而這個問題又因 JavaScript 的阻塞特性變的復雜,也就是說當瀏覽器在執行 JavaScript 代碼時,不能同時做其他任何事情。本文詳細介紹了如何正確的加載和執行 JavaScript 代碼,從而提高其在瀏覽器中的性能。

概覽

無論當前 JavaScript 代碼是內嵌還是在外鏈文件中,頁面的下載和渲染都必須停下來等待腳本執行完成。JavaScript 執行過程耗時越久,瀏覽器等待響應用戶輸入的時間就越長。瀏覽器在下載和執行腳本時出現阻塞的原因在于,腳本可能會改變頁面或 JavaScript 的命名空間,它們對后面頁面內容造成影響。一個典型的例子就是在頁面中使用document.write()。

JavaScript 代碼內嵌示例

<html><head> <title>Source Example</title></head><body> <p> <script type='text/javascript'>document.write('Today is ' + (new Date()).toDateString()); </script> </p></body></html>

當瀏覽器遇到<script>標簽時,當前 html 頁面無從獲知 JavaScript 是否會向<p> 標簽添加內容,或引入其他元素,或甚至移除該標簽。因此,這時瀏覽器會停止處理頁面,先執行 JavaScript代碼,然后再繼續解析和渲染頁面。同樣的情況也發生在使用 src 屬性加載 JavaScript的過程中,瀏覽器必須先花時間下載外鏈文件中的代碼,然后解析并執行它。在這個過程中,頁面渲染和用戶交互完全被阻塞了。

腳本位置

HTML 4 規范指出 <script> 標簽可以放在 HTML 文檔的<head>或<body>中,并允許出現多次。web 開發人員一般習慣在 <head> 中加載外鏈的 JavaScript,接著用 <link> 標簽用來加載外鏈的 CSS 文件或者其他頁面信息。

低效率腳本位置示例

<html><head> <title>Source Example</title> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/script1.js'></script> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/script2.js'></script> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/script3.js'></script> <link rel='stylesheet' type='text/css' href='http://www.gepszalag.com/bcjs/styles.css'></head><body> <p>Hello world!</p></body></html>

然而這種常規的做法卻隱藏著嚴重的性能問題。在清單 2 的示例中,當瀏覽器解析到 <script> 標簽(第 4 行)時,瀏覽器會停止解析其后的內容,而優先下載腳本文件,并執行其中的代碼,這意味著,其后的 styles.css 樣式文件和<body>標簽都無法被加載,由于<body>標簽無法被加載,那么頁面自然就無法渲染了。因此在該 JavaScript 代碼完全執行完之前,頁面都是一片空白。

由于腳本會阻塞頁面其他資源的下載,因此推薦將所有<script>標簽盡可能放到<body>標簽的底部,以盡量減少對整個頁面下載的影響。

推薦的代碼放置位置示例

<html><head> <title>Source Example</title> <link rel='stylesheet' type='text/css' href='http://www.gepszalag.com/bcjs/styles.css'></head><body> <p>Hello world!</p> <!-- Example of efficient script positioning --> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/script1.js'></script> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/script2.js'></script> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/script3.js'></script></body></html>

這段代碼展示了在 HTML 文檔中放置<script>標簽的推薦位置。盡管腳本下載會阻塞另一個腳本,但是頁面的大部分內容都已經下載完成并顯示給了用戶,因此頁面下載不會顯得太慢。這是優化 JavaScript 的首要規則:將腳本放在底部。

組織腳本

由于每個 <script> 標簽初始下載時都會阻塞頁面渲染,所以減少頁面包含的 <script> 標簽數量有助于改善這一情況。這不僅針對外鏈腳本,內嵌腳本的數量同樣也要限制。瀏覽器在解析 HTML 頁面的過程中每遇到一個 <script> 標簽,都會因執行腳本而導致一定的延時,因此最小化延遲時間將會明顯改善頁面的總體性能。

這個問題在處理外鏈 JavaScript 文件時略有不同??紤]到 HTTP 請求會帶來額外的性能開銷,因此下載單個 100Kb 的文件將比下載 5 個 20Kb 的文件更快。也就是說,減少頁面中外鏈腳本的數量將會改善性能。

通常一個大型網站或應用需要依賴數個 JavaScript 文件。您可以把多個文件合并成一個,這樣只需要引用一個 <script> 標簽,就可以減少性能消耗。文件合并的工作可通過離線的打包工具或者一些實時的在線服務來實現。

需要特別提醒的是,把一段內嵌腳本放在引用外鏈樣式表的 <link> 之后會導致頁面阻塞去等待樣式表的下載。這樣做是為了確保內嵌腳本在執行時能獲得最精確的樣式信息。因此,建議不要把內嵌腳本緊跟在 <link> 標簽后面。

無阻塞的腳本

減少 JavaScript 文件大小并限制 HTTP 請求數在功能豐富的 Web 應用或大型網站上并不總是可行。Web 應用的功能越豐富,所需要的 JavaScript 代碼就越多,盡管下載單個較大的 JavaScript 文件只產生一次 HTTP 請求,卻會鎖死瀏覽器的一大段時間。為避免這種情況,需要通過一些特定的技術向頁面中逐步加載 JavaScript 文件,這樣做在某種程度上來說不會阻塞瀏覽器。

無阻塞腳本的秘訣在于,在頁面加載完成后才加載 JavaScript 代碼。這就意味著在 window 對象的 onload 事件觸發后再下載腳本。有多種方式可以實現這一效果。

延遲加載腳本

HTML 4 為 <script> 標簽定義了一個擴展屬性: defer 。 Defer 屬性指明本元素所含的腳本不會修改 DOM,因此代碼能安全地延遲執行。 defer 屬性只被 IE 4 和 Firefox 3.5 更高版本的瀏覽器所支持,所以它不是一個理想的跨瀏覽器解決方案。在其他瀏覽器中, defer 屬性會被直接忽略,因此 <script> 標簽會以默認的方式處理,也就是說會造成阻塞。然而,如果您的目標瀏覽器支持的話,這仍然是個有用的解決方案。

defer 屬性使用方法示例

<script type='text/javascript' src='http://www.gepszalag.com/bcjs/script1.js' defer></script>

帶有 defer 屬性的 <script> 標簽可以放置在文檔的任何位置。對應的 JavaScript 文件將在頁面解析到 <script> 標簽時開始下載,但不會執行,直到 DOM 加載完成,即 onload 事件觸發前才會被執行。當一個帶有 defer 屬性的 JavaScript 文件下載時,它不會阻塞瀏覽器的其他進程,因此這類文件可以與其他資源文件一起并行下載。

任何帶有 defer 屬性的 <script> 元素在 DOM 完成加載之前都不會被執行,無論內嵌或者是外鏈腳本都是如此。清單 5 的例子展示了 defer 屬性如何影響腳本行為:

defer 屬性對腳本行為的影響

<html><head> <title>Script Defer Example</title></head><body> <script type='text/javascript' defer>alert('defer'); </script> <script type='text/javascript'>alert('script'); </script> <script type='text/javascript'>window.onload = function(){ alert('load');}; </script></body></html>

這段代碼在頁面處理過程中彈出三次對話框。不支持 defer 屬性的瀏覽器的彈出順序是:“defer”、“script”、“load”。而在支持 defer 屬性的瀏覽器上,彈出的順序則是:“script”、“defer”、“load”。請注意,帶有 defer 屬性的 <script> 元素不是跟在第二個后面執行,而是在 onload 事件被觸發前被調用。

如果您的目標瀏覽器只包括 Internet Explorer 和 Firefox 3.5,那么 defer 腳本確實有用。如果您需要支持跨領域的多種瀏覽器,那么還有更一致的實現方式。

HTML 5 為 <script> 標簽定義了一個新的擴展屬性: async 。它的作用和 defer 一樣,能夠異步地加載和執行腳本,不因為加載腳本而阻塞頁面的加載。但是有一點需要注意,在有 async 的情況下,JavaScript 腳本一旦下載好了就會執行,所以很有可能不是按照原本的順序來執行的。如果 JavaScript 腳本前后有依賴性,使用 async 就很有可能出現錯誤。

動態腳本元素

文檔對象模型(DOM)允許您使用 JavaScript 動態創建 HTML 的幾乎全部文檔內容。 <script> 元素與頁面其他元素一樣,可以非常容易地通過標準 DOM 函數創建:

通過標準 DOM 函數創建<script>元素

var script = document.createElement ('script'); script.type = 'text/javascript'; script.src = 'http://www.gepszalag.com/bcjs/script1.js'; document.getElementsByTagName('head')[0].appendChild(script);

新的 <script> 元素加載 script1.js 源文件。此文件當元素添加到頁面之后立刻開始下載。此技術的重點在于:無論在何處啟動下載,文件的下載和運行都不會阻塞其他頁面處理過程。您甚至可以將這些代碼放在 <head> 部分而不會對其余部分的頁面代碼造成影響(除了用于下載文件的 HTTP 連接)。

當文件使用動態腳本節點下載時,返回的代碼通常立即執行(除了 Firefox 和 Opera,他們將等待此前的所有動態腳本節點執行完畢)。當腳本是“自運行”類型時,這一機制運行正常,但是如果腳本只包含供頁面其他腳本調用調用的接口,則會帶來問題。這種情況下,您需要跟蹤腳本下載完成并是否準備妥善??梢允褂脛討B <script> 節點發出事件得到相關信息。

Firefox、Opera, Chorme 和 Safari 3+會在 <script> 節點接收完成之后發出一個 onload 事件。您可以監聽這一事件,以得到腳本準備好的通知:

通過監聽 onload 事件加載 JavaScript 腳本

var script = document.createElement ('script')script.type = 'text/javascript';//Firefox, Opera, Chrome, Safari 3+script.onload = function(){ alert('Script loaded!');};script.src = 'http://www.gepszalag.com/bcjs/script1.js';document.getElementsByTagName('head')[0].appendChild(script);

Internet Explorer 支持另一種實現方式,它發出一個 readystatechange 事件。 <script> 元素有一個 readyState 屬性,它的值隨著下載外部文件的過程而改變。 readyState 有五種取值:

微軟文檔上說,在 <script> 元素的生命周期中, readyState 的這些取值不一定全部出現,但并沒有指出哪些取值總會被用到。實踐中,我們最感興趣的是“loaded”和“complete”狀態。Internet Explorer 對這兩個 readyState 值所表示的最終狀態并不一致,有時 <script> 元素會得到“loader”卻從不出現“complete”,但另外一些情況下出現“complete”而用不到“loaded”。最安全的辦法就是在 readystatechange 事件中檢查這兩種狀態,并且當其中一種狀態出現時,刪除 readystatechange 事件句柄(保證事件不會被處理兩次):

通過檢查 readyState 狀態加載 JavaScript 腳本

var script = document.createElement('script')script.type = 'text/javascript';//Internet Explorerscript.onreadystatechange = function(){ if (script.readyState == 'loaded' || script.readyState == 'complete'){ script.onreadystatechange = null; alert('Script loaded.'); }};script.src = 'http://www.gepszalag.com/bcjs/script1.js';document.getElementsByTagName('head')[0].appendChild(script);

大多數情況下,您希望調用一個函數就可以實現 JavaScript 文件的動態加載。下面的函數封裝了標準實現和 IE 實現所需的功能:

通過函數進行封裝

function loadScript(url, callback){ var script = document.createElement ('script') script.type = 'text/javascript'; if (script.readyState){ //IEscript.onreadystatechange = function(){ if (script.readyState == 'loaded' || script.readyState == 'complete'){script.onreadystatechange = null;callback(); }}; } else { //Othersscript.onload = function(){ callback();}; } script.src = url; document.getElementsByTagName('head')[0].appendChild(script);}

此函數接收兩個參數:JavaScript 文件的 URL,和一個當 JavaScript 接收完成時觸發的回調函數。屬性檢查用于決定監視哪種事件。最后一步,設置 src 屬性,并將 <script> 元素添加至頁面。此 loadScript() 函數使用方法如下:

loadScript()函數使用方法

loadScript('script1.js', function(){ alert('File is loaded!');});

您可以在頁面中動態加載很多 JavaScript 文件,但要注意,瀏覽器不保證文件加載的順序。所有主流瀏覽器之中,只有 Firefox 和 Opera 保證腳本按照您指定的順序執行。其他瀏覽器將按照服務器返回它們的次序下載并運行不同的代碼文件。您可以將下載操作串聯在一起以保證他們的次序,如下:

通過 loadScript()函數加載多個 JavaScript 腳本

loadScript('script1.js', function(){ loadScript('script2.js', function(){loadScript('script3.js', function(){ alert('All files are loaded!');}); });});

此代碼等待 script1.js 可用之后才開始加載 script2.js,等 script2.js 可用之后才開始加載 script3.js。雖然此方法可行,但如果要下載和執行的文件很多,還是有些麻煩。如果多個文件的次序十分重要,更好的辦法是將這些文件按照正確的次序連接成一個文件。獨立文件可以一次性下載所有代碼(由于這是異步進行的,使用一個大文件并沒有什么損失)。

動態腳本加載是非阻塞 JavaScript 下載中最常用的模式,因為它可以跨瀏覽器,而且簡單易用。

使用 XMLHttpRequest(XHR)對象

此技術首先創建一個 XHR 對象,然后下載 JavaScript 文件,接著用一個動態 <script> 元素將 JavaScript 代碼注入頁面。清單 12 是一個簡單的例子:

通過 XHR 對象加載 JavaScript 腳本

var xhr = new XMLHttpRequest();xhr.open('get', 'script1.js', true);xhr.onreadystatechange = function(){ if (xhr.readyState == 4){if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){ var script = document.createElement ('script'); script.type = 'text/javascript'; script.text = xhr.responseText; document.body.appendChild(script);} }};xhr.send(null);

此代碼向服務器發送一個獲取 script1.js 文件的 GET 請求。 onreadystatechange 事件處理函數檢查 readyState 是不是 4,然后檢查 HTTP 狀態碼是不是有效(2XX 表示有效的回應,304 表示一個緩存響應)。如果收到了一個有效的響應,那么就創建一個新的 <script> 元素,將它的文本屬性設置為從服務器接收到的 responseText 字符串。這樣做實際上會創建一個帶有內聯代碼的 <script> 元素。一旦新 <script> 元素被添加到文檔,代碼將被執行,并準備使用。

這種方法的主要優點是,您可以下載不立即執行的 JavaScript 代碼。由于代碼返回在 <script> 標簽之外(換句話說不受 <script> 標簽約束),它下載后不會自動執行,這使得您可以推遲執行,直到一切都準備好了。另一個優點是,同樣的代碼在所有現代瀏覽器中都不會引發異常。

此方法最主要的限制是:JavaScript 文件必須與頁面放置在同一個域內,不能從 CDN 下載(CDN 指'內容投遞網絡(Content Delivery Network)',所以大型網頁通常不采用 XHR 腳本注入技術。

總結

減少 JavaScript 對性能的影響有以下幾種方法:

通過以上策略,可以在很大程度上提高那些需要使用大量 JavaScript 的 Web 網站和應用的實際性能。

原文來自:https://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/

補充js加載函數:

function loadJs(url, callback, charset) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); if ( !!charset) script.charset = 'utf-8'; script.src = url; script.onload = script.onreadystatechange = function() {var f = script.readyState;if (f && f != 'loaded' && f != 'complete') return;script.onload = script.onreadystatechange = null;head.removeChild(script) if (callback) { callback() || callback}; }; head.appendChild(script);}

// js同步加載function getScripts(i, linkArray, fn) { env || getEnv(); var script = document.createElement(’script’); script.type = ’text/javascript’; script.src = linkArray[i]; var head = document.head || document.getElementsByTagName(’head’)[0]; head.appendChild(script); if (env.ie && ’onreadystatechange’ in script && !(’draggable’ in script)){ //ie瀏覽器使用以下方式加載script.onreadystatechange = function () { if (/loaded|complete/.test(script.readyState)) { script.onreadystatechange = null; if(i === linkArray.length-1) {if (fn) { fn();} } else {getScripts(++i, linkArray, fn); } }}; }else{script.onload = function() { if(i === linkArray.length-1) {if (fn) { fn();} } else {getScripts(++i, linkArray, fn); }}; }}

// js存在依賴關系 依次加載getScripts(0, [ ’http://caibaojian.com/demo/base.js’, ’http://caibaojian.com/demo/reset.js’], function() { alert(’callback’);});

來自:http://www.helloweba.com/view-blog-406.html

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产成人av一区二区三区 | 国产精品一区二区三区免费视频 | 欧美日韩中文 | 色综合天天天天做夜夜夜夜做 | 中文字幕亚洲欧美日韩在线不卡 | 成av在线 | 欧美精产国品一二三区 | 久久久久久久成人 | 日韩 国产 在线 | 国产97久久 | 国产精品一区二区三区在线播放 | 午夜大片网 | 免费在线看a | 羞羞视频网站在线免费观看 | 夜夜艹| 亚洲激情av | 一级全黄少妇性色生活片免费 | 久久久国产一区二区三区 | 小川阿佐美88av在线播放 | 国产精品国产精品国产专区不片 | 91精品国产91久久久久久最新 | 久久久久久久网站 | 亚洲欧美在线视频 | 欧美福利电影在线观看 | 色综合一区 | 亚洲精品日韩综合观看成人91 | 乱人伦xxxx国语对白 | 91精品久久久久久综合五月天 | 久在线视频播放免费视频 | 色综久久 | 欧美久久久久久 | 国产精品久久久久一区二区三区 | 久久噜噜噜精品国产亚洲综合 | 色视频网站在线观看一=区 日韩一二三区 | 久久久久久久91 | 国产亚洲欧美一区二区三区 | 亚洲成人一区二区三区 | 亚洲成人免费在线 | 国产一区二区三区视频在线观看 | 日韩中文字幕av | av免费网站在线观看 | 午夜操操| 亚洲男人天堂网 | 亚洲精品专区 | 亚洲成人福利 | 精品一区视频 | 国产精品久久久久久久久大全 | 青青草精品 | 欧美日韩午夜精品 | 狠狠搞狠狠搞 | 久久中文字幕一区 | 日韩精品在线免费 | 97国产在线视频 | 日本一本在线 | www.久久| 成人在线视频网 | 成人免费视频网 | 国产免费黄视频 | 中文字幕不卡 | 卡通动漫第一页 | 波多野吉衣网站 | 亚洲一区二区三区四区在线 | 黄视频免费在线 | 视频一区二区中文字幕 | 国产精品久久久久久久久免费 | 免费视频一区二区 | 美女天堂| 精品国产乱码久久久久久丨区2区 | 爱操在线| 国产一区二区三区四区在线观看 | 国产精品美女久久久久aⅴ国产馆 | 99热少妇 | 亚洲国产精品成人综合色在线婷婷 | 久久综合九色综合欧美狠狠 | 日韩超碰在线观看 | 91精品国产91久久久久久不卡 | 玖玖爱视频在线 | 久久亚洲欧美日韩精品专区 | 精品少妇一区二区三区日产乱码 | 红色av社区 | 国产视频久久久 | 国产一区二区三区免费 | 一区二区三区av | 91精品入口蜜桃 | 欧美99热| 波多野结衣一区二区三区高清 | 国产主播久久 | 美女久久一区 | 九九99九九精彩46 | 日韩午夜电影 | 国产精品婷婷久久久久 | 爽死777影院| 欧美精品一区视频 | 777xacom| 一区二区三区四区免费观看 | 不卡欧美 | 九九热精| 人人干人人干 | 亚洲乱码国产乱码精品精98午夜 | 国产精品3区| 国产午夜精品久久久久久久 | 午夜日韩 | 三级黄色视频毛片 | 播放一级黄色片 | 国产精品久久99 | 99久久婷婷国产综合精品电影 | 91精品啪aⅴ在线观看国产 | 99视频在线免费观看 | 日本一级中文字幕久久久久久 | 国产精品三级视频 | 亚洲视频在线免费观看 | 日韩av在线不卡 | 热久久久久 | 狠狠插狠狠操 | 在线免费91| 国产欧美精品一区二区三区 | 欧美精品1区 | 一区二区精品在线 | 国产男女视频在线观看 | 欧美日韩精品一区二区三区 | 在线亚洲人成电影网站色www | 日韩在线一区二区三区 | 97精品国产97久久久久久免费 | 涩涩视频在线看 | 欧美一区在线视频 | 免费黄看片 | 亚洲国产精品99久久久久久久久 | 国产精品99久久久久久宅男 | 91亚洲国产成人精品性色 | 日韩在线视频一区 | 久久se精品一区精品二区 | 亚洲欧洲精品在线 | 久久av免费 | 国产私拍视频 | 四虎在线视频 | 亚洲一区二区三 | 国产日韩欧美在线 | 日韩视频在线免费播放 | 日日操狠狠操 | a久久免费视频 | 欧美日韩三级 | 亚洲久久 | www国产xxx| 国产老女人精品毛片久久 | 国产视频久久 | 亚洲一二三区电影 | 中文无吗| 波多野吉衣网站 | 欧美视频精品在线 | 蜜臀91精品国产高清在线观看 | 日韩久久久 | 久草 在线 | 久草免费在线 | 精品久久久久国产免费 | 一区精品视频 | 日韩成人免费av | 亚洲一区中文字幕 | 中文字幕在线视频网站 | 欧美日韩精品一区二区三区四区 | 亚洲丶国产丶欧美一区二区三区 | 日韩成人影视 | 亚洲成人在线网站 | 亚洲精品国产setv | 羞羞视频在线观看入口 | 毛片在线免费 | 日韩视频免费看 | 日韩中文在线 | 国产99久久精品一区二区永久免费 | 亚洲高清在线 | 99精品一级欧美片免费播放 | 国产视频久久久久久久 | 91精品国产综合久久久久久蜜臀 | xvideos.蜜桃一区二区 | 成人免费高清视频 | 国产一区日韩欧美 | 国产最好的精华液网站 | www久 | 一区二区三区四区免费 | 久久久久久久久久影院 | 亚洲欧洲一区二区 | 国产精品日韩 | 亚洲视频在线播放 | 久久久精品久久久 | 国产精品久久9 | 久久久久久国产精品 | 成人性生交大片免费看中文带字幕 | 国产浪潮av色综合久久超碰 | 久久国产精品免费一区二区三区 | 国外成人在线视频网站 | 狠狠爱www人成狠狠爱综合网 | 国产精品高清在线 | 日本免费久久 | yy6080久久伦理一区二区 | 亚洲日本va中文字幕 | 99精品网站 | 亚洲中午字幕 | 国产精品视频播放 | 怡红院免费在线视频 | 日韩小视频网站hq | 日韩精品一区二区三区在线观看 | 亚洲一区观看 | 黄色大片免费网址 | 久久精品国产一区二区电影 | 午夜色电影 | 国产一级一级国产 | 国产精品永久免费自在线观看 | av男人的天堂网 | 亚洲第一成年免费网站 | 在线日韩| 国产免费一区二区三区 | av片在线观看 | 欧美日韩高清 | 欧美电影一区 | 黑人巨大精品欧美一区二区免费 | 久久精品高清 | 日韩欧美在线视频 | 欧美99| 国产专区一区二区三区 | 亚洲美女av在线 | 国产日韩一区二区三免费高清 | 狠狠狠干 | 欧美在线不卡 | 一级特黄 | 免费久久久 | 久久久久中文字幕 | 在线观看免费av的网址 | aaa级片| 日本99精品| 亚洲一区亚洲二区 | 欧美一区二区三区在线看 | 亚洲国产成人精品女人久久久 | 日本精品免费 | 综合一区二区三区 | 99精品欧美一区二区三区综合在线 | 国产精品久久久久国产a级 99精品欧美一区二区三区综合在线 | 国产欧美精品一区二区 | 国产精品国产a级 | 欧美日本韩国在线 | 日韩午夜 | 日韩精品www | 亚洲免费在线视频 | 国产传媒毛片精品视频第一次 | 国产一区二区三区免费 | 日本在线免费观看 | 国产午夜精品福利 | 国产日韩欧美视频 | 中文字幕av一区二区 | 日韩视频一区在线观看 | 亚洲午夜视频 | 久久久久久久久久久久福利 | 成人免费视频观看视频 | 国产精品视频专区 | 国产成人精品免高潮在线观看 | 亚洲九九| 天天爽夜夜爽夜夜爽精品视频 | 国产精品久久久久久无遮挡 | av大片网| 在线观看国精产品二区1819 | 日韩成人影院 | 91精品久久久久久久久中文字幕 | 色视频在线免费观看 | 在线一区二区三区做爰视频网站 | 欧美在线xxx | 一区二区三区视频免费在线观看 | 国产精品美女久久久久久久久久久 | 91久久夜色精品国产网站 | 天天天天天天天天干 | 一区二区三区四区在线播放 | 国产乱码精品一区二区三区忘忧草 | 久久网国产 | 成人精品国产免费网站 | 亚洲免费电影一区 | 男女精品视频 | 天天摸天天操 | 欧美日韩免费看 | 亚洲第一视频 | 欧美一区| 欧美色视频在线观看 | 毛片在线免费播放 | 一区二区三区在线观看免费 | 国产精品中文字幕在线播放 | a级毛片基地 | 亚洲精品电影 | 国产日韩精品一区 | 夜夜爽99久久国产综合精品女不卡 | 2018自拍偷拍 | 日本一区二区精品 | 日韩精品免费在线观看 | 日韩三级av在线 | 综合久久99 | 免费午夜电影 | 中文字幕成人影院 | 91视频入口| 精品成人在线 | 性色av网 | 日韩av一区二区三区在线观看 | 最近中文字幕免费观看 | 成人国产精品久久久 | 91视频在线观看 | 亚洲精品乱码久久久久久久久 | 亚洲一区二区av | 日韩在线免费 | 中文一区二区 | 特级淫片日本高清视频免费 | 亚洲精品在线播放 | 久久久精 | 日韩视频精品在线 | 国产人妖在线 | 久久久久国产 | 国产精品久久久久久久久小说 | 成人精品鲁一区一区二区 | 亚洲第一福利视频 | 岛国一区 | 中文久久 | 成人性视频在线 | 日本久久精品电影 | 欧美在线一区二区三区 | 天堂√在线观看一区二区 | 日韩欧美国产精品综合嫩v 久久久久久国产精品高清 国产目拍亚洲精品99久久精品 | 日日操夜夜操免费视频 | 亚洲午夜在线 | 亚洲影视一区 | 爱爱视频网站 | 九九九色 | 国产精品亚洲一区二区三区在线 | 国产精品美女久久久久aⅴ国产馆 | 天天干天天操天天干 | 亚洲午夜精品一区二区三区他趣 | 国产乱码精品一区二区三区av | 亚洲另类视频 | 99精品欧美一区二区三区综合在线 | 欧美黄色一区 | 久久久久久亚洲精品 | 精品亚洲精品 | 韩日一区二区 | 亚洲精品字幕 | 国产天天操 | 中文成人在线 | 狠狠的日 | 欧美中文字幕一区 | 日韩欧美一区二区三区免费观看 | 夜本色| 成人在线观看av | 少妇性l交大片免费一 | 羞羞视频在线免费观看 | 久久久一 | 中文字幕日韩在线 | caoporn免费在线视频 | 国产一区久久久 | 国产精品久久一区二区三区 | 中文一区 | 国产一区二区视频在线观看 | 久草成人 | 粉嫩国产精品一区二区在线观看 | 国产精品国产精品国产专区不片 | 欧美一区免费 | 久久久久国产精品视频 | 精品在线一区二区三区 | 国产成人一区二区三区 | 玖玖国产精品视频 | 一级毛片在线播放 | 99热在线精品免费 | 色网站免费视频 | 天天av天天操 | 噜噜噜噜狠狠狠7777视频 | 中文字幕日韩欧美 | 精品亚洲一区二区三区 | 欧美成年黄网站色视频 | 天堂中文字幕 | 欧美亚洲视频在线观看 | 91久久久久久久久 | 国产欧美精品一区二区三区四区 | 国产视频中文字幕 | 久久99精品国产99久久6尤 | 亚洲成人一区二区 | 成人午夜精品一区二区三区 | 羞羞视频在线播放 | 中文字幕一区二区三区四区不卡 | 欧美视频在线播放 | 91精品国产色综合久久不卡98 | 国产精品国产精品国产 | 久久精品国产视频 | 日韩小视频 | 国产一区二区三区高清 | 久色 | 日韩美女爱爱 | 欧美日韩一区二区视频在线观看 | 黄色影视网址 | 亚洲精品不卡 | 日韩在线欧美 | 成人国产精品久久久 | 亚洲一区二区在线播放 | 毛片网站大全 | 羞羞视频免费观看 | 国产三级在线免费观看 | 谁有毛片 | 国产精品一区人伦免视频播放 | 欧美一区二区三区在线视频 | 午夜精品久久久久久久久久久久 | 一级在线毛片 | 在线a级毛片 | 国产在线一级片 | 精品99视频 | 日韩欧美国产一区二区 | 日韩精品免费在线观看 | 欧美激情视频一区二区三区在线播放 | 日本久久精品视频 | 中文字幕不卡 | 日本不卡一区 | 国产91精选| 丁香久久| 亚洲蜜臀av乱码久久精品蜜桃 | 国产ts人妖另类 | 欧美日本乱大交xxxxx | 亚洲一区二区三区免费看 | 巴西性猛交xxxx免费看久久久 | 欧美日韩免费看 | 亚洲成熟少妇视频在线观看 | 99精品视频免费在线观看 | 国产午夜精品一区二区三区嫩草 | 日韩精品一区二区三区在线播放 | 日本中文字幕视频 | 日韩精品在线免费观看视频 | 亚洲成av人片在线观看 | 伊人久久视频 | 亚洲wu码 | 九九视频在线 | 欧美日韩三级在线 | 国产在线一区不卡 | 国产亚洲精品久久久久动 | 精品久久久久久久久久久久久久 | 国产精品一品二区三区的使用体验 | 欧美怡红院视频一区二区三区 | 精品久 | 第一色综合| 成人av免费观看 | 影音先锋久久 | 古风h啪肉1v1摄政王 | 999国内精品永久免费视频 | 99热这里有 | 91一区在线 | 91精品久久久久久久久久久久久久久 | 亚洲成人久久久 | 综合99 | 国产三级在线 | 一区二区三区在线免费观看 | 久久久av | 99精品欧美一区二区蜜桃免费 | 中文字幕第一页在线 | 综合网视频 | 国产精品成人在线观看 | caoporn免费| 日韩欧美一区二区三区久久婷婷 | www久久久 | a∨在线观看 | 日韩avav| 亚洲精品久久久蜜臀 | 在线免费观看激情视频 | 久久成人国产 | 91精品一区二区三区久久久久 | 精品久久久久国产 | 国产成人av一区二区三区 | 国产真实乱全部视频 | 色一情一乱一伦一区二区三区 | 国产精品久久久久久福利一牛影视 | 羞羞视频在线观看免费 | 精品一二区 | 欧美日韩激情在线 | 青草青草久热精品视频在线观看 | 久久大陆| 狠狠草视频 | 天天色天天射天天操 | 一区免费看 | 国产欧美精品一区二区三区 | 日韩一区二区在线播放 | 在线日韩视频 | 欧美在线网站 | av av在线 | 国产精品毛片久久久久久久 | 免费成人在线观看 | 国产免费观看一区二区三区 | 成人免费视频网 | 免费视频二区 | 最新av在线网址 | 精品久久久久久久久久久久 | 精品国产乱码久久久久久1区2区 | 中文字幕视频免费观看 | 国产成人精品一区二区视频免费 | 天天干夜夜爽 | 久久国产精品免费一区二区三区 | 国产精品久久久久久久久久东京 | 日韩精品一区二区三区 | 91精品国产综合久久国产大片 | 国变精品美女久久久久av爽 | 亚洲国产精品网站 | 亚洲成人免费视频在线观看 | 久久久久久久国产 | 青草青草久热精品视频在线观看 | 国产综合久久久久久鬼色 | 亚洲一区二区免费视频 | 欧美日韩亚洲成人 | 亚洲啊v在线 | 日韩精品中文字幕在线播放 | 国产伦精品一区二区三区四区视频 | 日韩福利视频网 | 日韩成人av在线 | 精品96久久久久久中文字幕无 | 九九热在线视频免费观看 | 欧美视频在线一区 | 成年免费视频 | 精品不卡| 国产日韩欧美在线 | 九九在线国产视频 | 日韩免费一区 | 国语av在线 | 精品日韩一区二区三区 | 国产 欧美 日韩 一区 | 成视频年人免费看黄网站 | 天天躁日日躁aaaaxxxx | 99re6在线视频精品免费 | 精品国产一区二区三区久久 | 青青草国产在线 | 一区二区三区视频 | 欧美日韩免费一区二区三区 | 国产一区二区三区在线视频 | 91亚洲国产成人久久精品网站 | 国产偷录视频叫床高潮对白 | 久久九九这里只有精品 | 第一福利丝瓜av导航 | 国产精品久久久久久久久久久久 | 精品久久久一区 | a国产精品 | 欧美一区二区三区久久精品 | 亚洲 中文 欧美 日韩 在线观看 | 国产一区二区三区精品久久久 | 91免费在线播放 | 国产精品视频免费观看 | 欧美高清成人 | 国产成人精品午夜视频免费 | 欧美女优在线视频 | 精品成人免费一区二区在线播放 | 日韩看片 | 久久久午夜爽爽一区二区三区三州 | av免费观看网站 | 精品中文字幕在线 | 欧美精品一区在线观看 | 午夜影院黄色 | 午夜精品一区二区三区在线视频 | 99久久久99久久国产片鸭王 | 日韩精品一区二区三区视频播放 | 欧美日韩一区二区中文字幕 | 亚洲精品视频免费看 | 天天天干天天天操 | 精品九九九 | 国产精品免费观看 | 一区二区三区四区在线播放 | 国产精久久久久久久妇剪断 | 欧美成人一区二区三区片免费 | 求av网址| 亚洲成人高清 | 国产在线日韩 | 中文字幕日韩在线 | 日韩一区二区三区在线视频 | 国产精品资源在线 | 嫩草视频在线观看免费 | 国产乱码精品一区二区三区手机版 | 欧美一级片免费播放 | 免费在线观看一区二区 | 日本中文字幕电影 | 国产精品人人做人人爽人人添 | 成人精品在线视频 | 精品无码久久久久久国产 | 国产免费av在线 | 99久久久久久 | 精品久久久久久久久久久 | 国产成人精品亚洲日本在线观看 | 免费观看一级黄色片 | 久久久久久久国产精品 | 天天看天天爽 | 久久的爱 | 午夜久久久久 | 999精品免费 | 国产精品一区久久 | 毛片免费在线观看 | 亚洲国产精品一区 | 精品国产一区二区三区成人影院 | 久久国产一区二区 | 日韩视频在线观看视频 | 精品国产精品三级精品av网址 | 久久久麻豆 | 亚洲欧美激情精品一区二区 | 亚洲精品乱码久久久久久蜜桃 | 亚洲一区中文字幕 | 四虎影院在线看 | 亚洲www啪成人一区二区 | 日韩成人精品视频在线观看 | 国产午夜久久 | 日本免费三片免费观看 | 久久国产成人 | 欧美不卡 | 久久影音先锋 | 日韩在线视频一区 | 天天干夜夜弄 | 国产一区二区在线视频观看 | 国产亚洲精品久久久优势 | 亚洲不卡 | 国产精品18久久久久久久久 | 国产精品一区二区三区99 | 欧美激情网站 | 黄色网址av | 成年人视频在线免费观看 | 午夜av电影 | 国产精品久久久久久久久免费 | 国产女无套免费网站 | 午夜电影网址 |