久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

Laravel Octane是什么?怎么用?

Taylor Otwell 已經(jīng)在他的 Laracon 在線演講中展示了 Laravel 最新的開(kāi)源包 Octane,新的包在 Github 上可用,每個(gè)人都可以進(jìn)行測(cè)試。

在這篇博客文章中,我們將探索 Laravel Octane,并告訴您它是什么,如果安裝并使用它,以及您可能需要它的原因。【推薦學(xué)習(xí):laravel教程】

什么是 Laravel Octane?

Laravel Octane 是一個(gè)開(kāi)源包,它可以提升你的 Laravel 應(yīng)用性能。Laravel Octane 需要 PHP 8,如果您還在使用 7.x,您需要升級(jí)您的 PHP 版本。在底層,Octane 使用了 Swoole 和 RoadRunner 兩個(gè)應(yīng)用服務(wù)器,負(fù)責(zé)服務(wù)和啟動(dòng)你的 Laravel 程序。

對(duì)于通過(guò)像 nginx 這樣的網(wǎng)絡(luò)服務(wù)器提供服務(wù)的傳統(tǒng) PHP 應(yīng)用程序,每個(gè)傳入請(qǐng)求都會(huì)產(chǎn)生一個(gè) PHP-FPM 工作器。這意味著每個(gè)請(qǐng)求都會(huì)啟動(dòng)一個(gè)單獨(dú)的 PHP 進(jìn)程,該進(jìn)程運(yùn)行所有的必要任務(wù),以便為該請(qǐng)求提供服務(wù)。

在 Laravel 的情況下,這意味著需要啟動(dòng)框架,所有服務(wù)提供者在容器中注冊(cè)他們的服務(wù),所有提供者都自己?jiǎn)?dòng),請(qǐng)求通過(guò)中間件類列表,命中您的控制器,呈現(xiàn)視圖等。直到我們最終從我們的服務(wù)器得到響應(yīng)。

使用 Swoole 或 RoadRunner 后,我們?nèi)匀粸槊總€(gè)傳入的 HTTP 請(qǐng)求提供一個(gè)工作線程,但它們都共享相同的引導(dǎo)框架。這意味著只有第一個(gè)傳入請(qǐng)求將引導(dǎo)框架(包括所有服務(wù)提供者等)。而其他所有請(qǐng)求則可以使用現(xiàn)成的框架。這就是 Octane 如此之快的原因。

開(kāi)始使用 Laravel Octane

由于 Laravel Octane 是一個(gè)包,因此您需要將它安裝為特定應(yīng)用程序的依賴項(xiàng)。您可以通過(guò) composer 安裝它:

composer require laravel/octane

在應(yīng)用程序中安裝 Octane 后,請(qǐng)確保運(yùn)行 php artisan octane:install。這將發(fā)布 Octane 的配置文件,并將 rr – RoadRunner 二進(jìn)制文件添加到 .gitignore 文件中。

正如我所說(shuō),Octane 將發(fā)布其配置文件,如下所示:

return [      /*     |--------------------------------------------------------------------------     | Octane 服務(wù)器     |--------------------------------------------------------------------------     |     | 該值決定了 Octane 在通過(guò) CLI 啟動(dòng)、     | 重啟或停止服務(wù)器時(shí)將使用的默認(rèn) “服務(wù)器”。     | 您可以隨意將其更改為您選擇的受支持服務(wù)器。     |     */      'server' => env('OCTANE_SERVER', 'roadrunner'),      /*     |--------------------------------------------------------------------------     | 強(qiáng)制 HTTPS     |--------------------------------------------------------------------------     |     | 當(dāng)該配置值設(shè)置為 “true” 時(shí),     | Octane 將通知框架必須使用 HTTPS 協(xié)議生成鏈接。     | 否則,您的鏈接可能會(huì)使用普通 HTTP 生成。     |     */      'https' => env('OCTANE_HTTPS', false),      /*     |--------------------------------------------------------------------------     | Octane 監(jiān)聽(tīng)器     |--------------------------------------------------------------------------     |     | Octane 事件的所有事件監(jiān)聽(tīng)器定義如下     | 這些監(jiān)聽(tīng)器負(fù)責(zé)為下一個(gè)請(qǐng)求重置應(yīng)用程序的狀態(tài)。     | 您可以將自己的監(jiān)聽(tīng)器添加到列表中。     |     */      'listeners' => [         WorkerStarting::class => [             EnsureUploadedFilesAreValid::class,         ],          RequestReceived::class => [             ...Octane::prepareApplicationForNextOperation(),             ...Octane::prepareApplicationForNextRequest(),             //         ],          RequestHandled::class => [             //         ],          RequestTerminated::class => [             //         ],          TaskReceived::class => [             ...Octane::prepareApplicationForNextOperation(),             //         ],          TickReceived::class => [             ...Octane::prepareApplicationForNextOperation(),             //         ],          OperationTerminated::class => [             FlushTemporaryContainerInstances::class,             // DisconnectFromDatabases::class,             // CollectGarbage::class,         ],          WorkerErrorOccurred::class => [             ReportException::class,             StopWorkerIfNecessary::class,         ],          WorkerStopping::class => [             //         ],     ],      /*     |--------------------------------------------------------------------------     | 預(yù)熱 / 刷新綁定     |--------------------------------------------------------------------------     |     | 下面列出的綁定要么在工作進(jìn)程啟動(dòng)時(shí)預(yù)熱,     | 要么在每次新請(qǐng)求之前刷新。     | 刷新綁定將強(qiáng)制容器在被請(qǐng)求時(shí)再次解析該綁定。     |     */      'warm' => [         ...Octane::defaultServicesToWarm(),     ],      'flush' => [         //     ],      /*     |--------------------------------------------------------------------------     | 垃圾收集閾值     |--------------------------------------------------------------------------     |     | 在執(zhí)行諸如 Octane 之類的長(zhǎng)期存在的 PHP 腳本時(shí),     | 內(nèi)存可能會(huì)在被 PHP 清除之前積累。     | 如果您的應(yīng)用程序消耗了此數(shù)量的兆字節(jié),     | 您可以強(qiáng)制 Octane 運(yùn)行垃圾回收。     |     */      'garbage' => 50,      /*     |--------------------------------------------------------------------------     | 最長(zhǎng)執(zhí)行時(shí)間     |--------------------------------------------------------------------------     |     | (提示) 0 表示沒(méi)有最長(zhǎng)時(shí)間限制     |     */      'max_execution_time' => 30,      /*     |--------------------------------------------------------------------------     | Octane 緩存表     |--------------------------------------------------------------------------     |     | 在使用 Swoole 時(shí),     | 您可以利用由 Swoole 表提供支持的 Octane 緩存。     | 您可以使用以下配置選項(xiàng)設(shè)置最大行數(shù)以及每行的字節(jié)數(shù)。     |     */      'cache' => [         'rows' => 1000,         'bytes' => 10000,     ],      /*     |--------------------------------------------------------------------------     | Octane Swoole 表     |--------------------------------------------------------------------------     |     | 在使用 Swoole 時(shí),     | 您可以根據(jù)應(yīng)用程序的需要定義額外的表。     | 這些表可用于存儲(chǔ)特定 Swoole 服務(wù)器上其他工作人員需要快速訪問(wèn)的數(shù)據(jù)。     |     */      'tables' => [         'example:1000' => [             'name' => 'string:1000',             'votes' => 'int',         ],     ],];

接下來(lái),你需要決定自己是使用 RoadRunner 還是 Swoole,然后,你可以通過(guò)自定義配置文件中的 server 鍵來(lái)配置要使用的應(yīng)用程序服務(wù)器。這可以是 swooleroadrunner

RoadRunner

RoadRunner 是一個(gè)用 Go 編寫的應(yīng)用程序服務(wù)器,它在 PHP 本身沒(méi)有任何其他依賴項(xiàng)。如果您不想安裝額外的 PHP 擴(kuò)展,請(qǐng)選擇 RoadRunner。您可以通過(guò) composer 安裝 RoadRunner,如下所示:

composer require spiral/roadrunner

Swoole

Swoole 帶來(lái)了 RoadRunner 無(wú)法提供的一些好處。由于 Swoole 是 PHP 之上的擴(kuò)展,PHP 本身獲得了一些很酷的新特性,如 “ticks” 和 “協(xié)程”,我將稍后介紹。RoadRunner 沒(méi)有這些功能,所以如果你想使用它們,你應(yīng)該使用 Swoole。

你可以使用以下方法安裝 Swoole 擴(kuò)展:

pecl install swoole

在安裝過(guò)程中,系統(tǒng)會(huì)詢問(wèn)你是否希望在 Swoole 中支持 HTTP2, curl, JSON和 open_ssl。您可以安全地使用此處的默認(rèn)值(即 off),因?yàn)檫@些設(shè)置只會(huì)影響協(xié)程之類的東西。

啟動(dòng) Octane

一旦您安裝了 RoadRunner 或 Swoole,并在您的 octane.php 配置文件中定義了它,您就可以啟動(dòng) Octane 并讓它為您的 Laravel 應(yīng)用程序提供服務(wù)。

php artisan octane:start

默認(rèn)情況下,Octane 將在端口 8000 上啟動(dòng)服務(wù)器,因?yàn)槟梢酝ㄟ^(guò) http://localhost:8000 在瀏覽器中訪問(wèn)您的應(yīng)用程序。

繼續(xù),訪問(wèn)該路由并查看 Laravel 應(yīng)用程序! 如果你發(fā)出了多個(gè)請(qǐng)求,將會(huì)看到第一個(gè)請(qǐng)求稍微慢一點(diǎn),因?yàn)檫@是框架啟動(dòng)的地方,而其他請(qǐng)求則明顯更快,因?yàn)樗鼈兛梢詮膬?nèi)存中使用啟動(dòng)后的框架。

200 GET / .............. 14.23 ms200 GET / ..............  1.93 ms200 GET / ..............  2.06 ms

更改代碼

如果現(xiàn)在添加新的 /test 路由 – 并嘗試訪問(wèn),將收到 404 響應(yīng)! 這是因?yàn)檎?qǐng)求訪問(wèn)的是 Octane 服務(wù)內(nèi)存中的框架(及其所有路由/代碼)。 因此,為了查看代碼更改,需要重啟 Octane 服務(wù)。 這導(dǎo)致在開(kāi)發(fā)過(guò)程中非常麻煩,所以 Octane 提供了一種很好的方式來(lái)自動(dòng)監(jiān)視代碼庫(kù)的更改并自動(dòng)重啟 Octane 服務(wù)。

為了完成這項(xiàng)工作,請(qǐng)確保安裝 Chokidar – 基于 NodeJS 的文件監(jiān)視庫(kù):

npm install --save-dev chokidar

然后,您可以在 “watch” 模式下啟動(dòng) Octane 服務(wù)器,如下所示:

php artisan octane:start --watch

現(xiàn)在,下次您對(duì)代碼庫(kù)進(jìn)行更改時(shí),系統(tǒng)會(huì)檢測(cè)到這一點(diǎn),Octane 將為請(qǐng)求重啟工作程序,您可以立即看到您的更改。

自定義 Workers

說(shuō)到 Workers,默認(rèn)情況下,Octane 將為您擁有的每個(gè) CPU 內(nèi)核啟動(dòng)一個(gè) worker,但是您也可以改變這一點(diǎn),通過(guò) --workers 選項(xiàng)傳遞 octane:start 命令:

php artisan octane:start --workers=2

Swoole 特定功能

正如文中所提到的,Octane 帶有一些 Swoole 特定的功能,我認(rèn)為非常有趣,讓我們來(lái)看看它們。

并發(fā)任務(wù)

Octane 可以同時(shí)執(zhí)行多個(gè)任務(wù)。 它們會(huì)同時(shí)執(zhí)行,并在所有任務(wù)完成后立即返回。

以下是 GitHub 上 Octane 文檔中的一個(gè)示例:

use AppUser;use AppServer;use LaravelOctaneFacadesOctane;[$users, $servers] = Octane::concurrently([     fn () => User::all(),     fn () => Server::all(),]);

在這個(gè)例子中,我們同時(shí)獲取所有用戶和所有服務(wù)。 為了證明它們是同時(shí)執(zhí)行,這是另一個(gè)例子:

Octane::concurrently([         function () {                 sleep(0.5);                 return 1;         },         function () {                 sleep(1);                 return 2;         },     ]);

我們同時(shí)執(zhí)行兩個(gè)「任務(wù)」,一旦它們完成,PHP 將繼續(xù)執(zhí)行代碼。 一個(gè)任務(wù)等待 0.5 秒,另一個(gè)任務(wù)等待 1 秒。 由于它們同時(shí)被執(zhí)行,在兩個(gè)單獨(dú)的任務(wù)中,PHP 將等待 1 秒(不是 1.5 秒),直到兩個(gè)結(jié)果都可用。 此功能是同時(shí)執(zhí)行多個(gè)較小任務(wù)的絕佳方式。

就像 --workers 選項(xiàng)一樣,您也可以自定義 Octane 提供 --task-workers 的數(shù)量。

Ticks / 間隔

Octane 與 Swoole 相結(jié)合,允許您注冊(cè) ticks – 這些操作將在給定的時(shí)間間隔內(nèi)自動(dòng)執(zhí)行。類似 JavasScript 中的 setInterval 方法。不幸的是,目前無(wú)法停止這些 ticks,但您可以像這樣在應(yīng)用程序中注冊(cè)它們:

Octane::tick('simple-ticker', fn () => ray('Ticking...'))         ->seconds(10);

Octane 緩存

Octane 和 Swoole 中的另一個(gè)新功能是新緩存驅(qū)動(dòng)程序。根據(jù)官方文檔,此緩存驅(qū)動(dòng)程序提供讀與寫速度高達(dá)每秒 200 萬(wàn)次操作。在幕后,Swoole 使用 Swoole 表 將數(shù)據(jù)緩存在共享內(nèi)存中,所有 workers 都可以訪問(wèn)該表。當(dāng)服務(wù)器重新啟動(dòng)時(shí),緩存數(shù)據(jù)將被刷新,因?yàn)榫彺鎯H保留在內(nèi)存中。

要使用此緩存,您可以通過(guò) Cache 門面的 otance 緩存存儲(chǔ)訪問(wèn)它,如下所示:

Cache::store('octane')->put('framework', 'Laravel', 30);

另一個(gè)很酷的新增功能,即 Swoole 和 Octane 特有的是 “緩存間隔” 能力。這允許您將信息存儲(chǔ)在 Octane 緩存中并在給定的時(shí)間間隔內(nèi)刷新數(shù)據(jù):

use IlluminateSupportStr;Cache::store('octane')->interval('random', function () {     return Str::random(10);}, seconds: 5)

Octane 表

基于 Swoole 表 的功能,您可以創(chuàng)建自己想要在 Octane 應(yīng)用程序中訪問(wèn)的表。這些表具有與緩存相同的性能優(yōu)勢(shì),允許您以結(jié)構(gòu)化方式保存數(shù)據(jù)。請(qǐng)記住,當(dāng)服務(wù)器重新啟動(dòng)時(shí),您存儲(chǔ)在此表中的所有數(shù)據(jù)都會(huì)丟失。

要配置表,您可以在 octane.php 配置文件中的 tables 部分創(chuàng)建一個(gè)條目:

'tables' => [     'example:1000' => [         'name' => 'string:1000',         'votes' => 'int',     ],],

在示例中,我們定義了一個(gè)名為 example 的表,該表最多可容納 1.000 個(gè)條目/行。表的結(jié)構(gòu)體是一個(gè) name,它的最大長(zhǎng)度為 1000 的字符串, 然而 votes,它是一個(gè)整數(shù)。

要把數(shù)據(jù)寫入表中,我們可以使用 Octane::table 方法:

use LaravelOctaneFacadesOctane;Octane::table('example')->set('a-unique-identifier', [     'name' => 'Marcel Pociot',     'votes' => 1000,]);

要取出數(shù)據(jù),我們可以在表上使用 get 方法,如下所示:

return Octane::table('example')->get('a-unique-identifier');

Octane 的注意事項(xiàng)

當(dāng)您想要為 Octane 準(zhǔn)備現(xiàn)有應(yīng)用程序或從開(kāi)頭開(kāi)始構(gòu)建新應(yīng)用程序時(shí),您需要注意幾件事。

由于 Octane 將框架保存在所有 workers 的內(nèi)存中,因此所有應(yīng)用程序服務(wù)提供商之類的東西只會(huì)注冊(cè)和啟動(dòng)一次。但 Octane 不可能重置您在自己的應(yīng)用程序代碼中可能具有的全局狀態(tài)。

目前可以在 GitHub 上找到的官方文檔包含一些您應(yīng)該注意的最常見(jiàn)場(chǎng)景。

監(jiān)聽(tīng)器

Octane 的一個(gè)尚未被記錄的特性是:無(wú)論何時(shí)在Octane內(nèi)的應(yīng)用程序服務(wù)器中發(fā)生什么事情,都可以注冊(cè)自定義監(jiān)聽(tīng)器。您可以監(jiān)聽(tīng)以下事件:

  • WorkerStarting
  • RequestReceived
  • RequestHandled
  • RequestTerminated
  • TaskReceived
  • TickReceived
  • OperationTerminated
  • WorkerErrorOccurred
  • WorkerStopping

要將監(jiān)聽(tīng)器附加到這些事件,您可以將它們添加到您的 octane.php 配置文件中。

服務(wù)預(yù)熱和刷新

當(dāng)一個(gè)新的 Octane worker 啟動(dòng)時(shí),您可以指定一個(gè)在啟動(dòng)過(guò)程中要「預(yù)熱」的容器綁定 / 服務(wù)列表。這意味著,在 Worker 啟動(dòng)時(shí),服務(wù)容器將已經(jīng)使指定的服務(wù)可用,以便后續(xù)請(qǐng)求可以立即訪問(wèn)它們。

Octane 已經(jīng)有一個(gè)內(nèi)部服務(wù)列表,它會(huì)在每個(gè)工作程序啟動(dòng)過(guò)程中保持熱加載,您也可以將自己的服務(wù)添加到 octane.php 配置文件中的 warm 部分。

與此類似,您還可以在新請(qǐng)求進(jìn)入之前定義要刷新的服務(wù)列表。這對(duì)于在請(qǐng)求過(guò)程中被操縱的服務(wù)很有用,當(dāng)新請(qǐng)求進(jìn)入時(shí),您希望將其重置為原始/卸載狀態(tài)。

Octane 路由

如果 Octane 沒(méi)有給您提升足夠的速度,您可以通過(guò) Octane 內(nèi)置的路由來(lái)進(jìn)一步提高速度。您可以通過(guò) Octane 自定義路由,如下所示:

Octane::route('GET', '/fast', function() {});

這些路由非常快,因?yàn)樗鼈兺耆^(guò)了 Laravel 的路由系統(tǒng)(因此這些路由不提供任何類型的中間件)— 這對(duì)只需要快速提供數(shù)據(jù)的端點(diǎn)很有幫助。

由于 Laravel 中的 HTTP 內(nèi)核未用于這些請(qǐng)求,您需要自己返回一個(gè) Symfony Response 對(duì)象,如下所示:

use SymfonyComponentHttpFoundationResponse;Octane::route('GET', '/faster', function() {     return new Response('Hello from Octane.');});

當(dāng)然,所有服務(wù)提供者都已啟動(dòng)且可用,因此您仍然可以使用這些服務(wù)執(zhí)行 Eloquent 查詢等。

好吧…那為什么是 Octane?

Laravel Octane 肯定會(huì)給您的 Laravel 應(yīng)用程序帶來(lái)巨大的性能提升 — 我們都喜歡性能提升,不是嗎?我們真的需要這種性能提升嗎?好吧,也許 — 我認(rèn)為這取決于您正在運(yùn)行的應(yīng)用程序。但對(duì)我來(lái)說(shuō)更重要的是 Laravel 正在(再次)推動(dòng) PHP 的當(dāng)前狀態(tài)。Octane 不僅是一個(gè)至少需要 PHP 8 的包,并且它還在 PHP 世界中推出了令人興奮的新功能,例如協(xié)程、ticks,以及使用 artisan 命令服務(wù)您應(yīng)用程序的思維模式。

我為 Octane 的未來(lái)感到興奮!


原文地址:https://beyondco.de/blog/laravel-octane-introduction

譯文地址:https://learnku.com/laravel/t/61524

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
老牛国内精品亚洲成av人片| 国产精品毛片一区二区三区| 国产一区二区视频在线看| 国产+成+人+亚洲欧洲在线| 久久影视一区| 日韩一区二区三区精品视频第3页| 国产精品**亚洲精品| 日韩精品首页| 天堂va欧美ⅴa亚洲va一国产| 精品中文在线| 日韩网站在线| 国产精品99久久免费| 五月激情久久| 中文字幕一区日韩精品| 国产日韩欧美| 久久久久久久久久久妇女| 亚洲精品系列| 日韩免费福利视频| 午夜精品影视国产一区在线麻豆| 精品免费在线| 久久午夜精品| 日韩av片子| 日韩精品一区二区三区中文在线| 视频二区不卡| 国产美女久久| 亚洲一区二区免费看| 久久精品色播| 亚洲精品第一| 久久精品卡一| 国产欧美69| 欧美午夜不卡| 成人综合一区| 日本国产亚洲| 亚洲欧洲一区| a天堂资源在线| 欧美日韩一视频区二区| 精品一区免费| 精品国产一区二区三区av片| 亚洲精选av| 国产精品av久久久久久麻豆网| 国产精品99久久久久久董美香| 日韩中文字幕区一区有砖一区 | 亚洲在线成人| 欧美国产小视频| 日本成人在线一区| 自拍日韩欧美| 色偷偷色偷偷色偷偷在线视频| 日韩av网站在线观看| 女人av一区| 天堂中文av在线资源库| 国产福利资源一区| 日韩亚洲精品在线观看| 亚洲精品午夜av福利久久蜜桃| 精品视频国内| 欧美日韩1区| 亚洲精品网址| 婷婷综合六月| 国产成人免费精品| 国产精品网在线观看| 视频在线观看国产精品| 婷婷精品视频| 日韩毛片视频| 超碰99在线| 精品伊人久久久| 国产精品视频一区视频二区| 日韩中文字幕| 老司机精品久久| 好吊日精品视频| 精品中文一区| 激情婷婷欧美| 啪啪国产精品| 日韩av福利| 国产91在线精品| 国产成人精选| 精品网站999| 精品视频国内| 精品日韩在线| 国产精品成人a在线观看| 国产一区二区三区亚洲| 久久久精品区| 国语对白精品一区二区| 精品亚洲免a| 丰满少妇一区| 黄色在线网站噜噜噜| 98精品视频| 黑森林国产精品av| 97se综合| 亚洲a在线视频| 精品一区在线| 妖精视频成人观看www| 一本一本久久| 蜜桃av一区二区三区电影| 蜜桃91丨九色丨蝌蚪91桃色| 一区二区三区国产在线| 一区二区精彩视频| 亚洲三级毛片| 欧美在线91| 精品中文字幕一区二区三区四区| 久久精品国内一区二区三区| 国产成人免费精品| 黄色在线网站噜噜噜| 精品国产第一福利网站| 久久精品中文| 午夜视频精品| 中文字幕日韩亚洲| 日本天堂一区| 久久久久亚洲精品中文字幕| jizzjizz中国精品麻豆| 久久网站免费观看| 免费欧美日韩| 日韩成人午夜精品| 麻豆精品久久| 久久精品导航| 蜜臀av一区二区在线免费观看 | 国内不卡的一区二区三区中文字幕| 久久亚洲精精品中文字幕| 神马久久午夜| aa亚洲婷婷| 人人爱人人干婷婷丁香亚洲| 久久久精品国产**网站| 婷婷综合六月| 视频一区二区不卡| 国产精品入口久久| 欧美日韩视频免费观看| 欧美日韩国产免费观看| 亚洲18在线| 精品久久久亚洲| 亚洲91久久| 噜噜噜躁狠狠躁狠狠精品视频| 日韩国产欧美三级| 成人日韩av| 五月天综合网站| 日韩动漫一区| 伊人久久国产| 亚洲涩涩av| 国产suv精品一区| 午夜一区在线| 国产经典一区| 欧美理论视频| 7777精品| 色综合www| 日韩精品乱码av一区二区| 国产精品一区二区精品视频观看 | 亚洲深夜福利在线观看| 欧美激情日韩| 91久久黄色| 国产精品久久久久av蜜臀| 成人羞羞在线观看网站| 亚洲精品激情| 日韩欧美精品| 日本强好片久久久久久aaa| 欧美成人a交片免费看| 在线一区视频| 精品资源在线| 亚洲我射av| 午夜精品成人av| 日韩av中文在线观看| 久久在线免费| 国产精品二区影院| 在线亚洲激情| 岛国av在线播放| 日韩动漫一区| 欧美不卡视频| 国产精品115| 久久先锋影音| av免费不卡国产观看| 日本综合视频| 久久久久国产| 国产精品tv| 综合激情网...| 日韩不卡在线| 久久av免费| 亚洲一区二区三区久久久| 日韩深夜视频| 国产精品一级在线观看| 视频一区中文字幕| 日本少妇一区| 久久不见久久见免费视频7| 视频一区在线播放| 欧美日韩精品免费观看视完整| 国产欧美一区二区色老头| 影音国产精品| av资源亚洲| 免费视频一区二区三区在线观看 | 亚洲伊人精品酒店| 久久精品1区| 精品欧美日韩精品| 欧美日韩亚洲一区在线观看| 尤物在线精品| 九九精品调教| 欧美激情在线精品一区二区三区| 免费在线观看精品| 婷婷激情综合| 亚洲成人一区在线观看| 精品国产午夜肉伦伦影院 | 久久精品国产99久久| 成人精品视频| 欧美aa在线视频| 欧美伊人影院| 日韩一区二区三区精品|