
アプリケーションのサイズや複雑さに関係なく、ユーザーはアプリケーションからの動的コンテンツがレンダリングされている速度を楽しむ場合は、滞在または戻ってくることを好むでしょう。 パフォーマンスの向上、迅速なページ配信、迅速なサーバー応答も、ユーザーがアプリケーションに夢中になるいくつかの要因の一部です。
これらおよび多くは成功し、普及したwebアプリケーションのための貢献の要因である。 最新のwebアプリケーションを高速化するために利用可能ないくつかのテクニックと戦略がありますが、キャッシュを実行する方がはるかに価値が
あなたのウェブサイト上の特定のページへのすべての要求は、直接通信し、サーバーからの応答を取得しています。 そのため、ユーザーが特定のページを訪問するたびに、フロントエンドはHTTP呼び出しを行い、適切なコンテンツを取得し、サーバーはそれに応じて応答するよう
小規模なwebアプリケーションでは、これはあまり多くないかもしれませんが、アプリケーションのスケールが開始されると、webサーバーへの膨大な数の要求が徐々に処理するにはあまりにも多くなり始めます。 これはしばしば不必要な過負荷とみなされます。
ウェブページを提供することは、多くのリソースを占有します–特にPHPを介して作成されたもののように動的に生成される場合。 したがって、このVarnish cacheチュートリアルでは、Varnishを使用せずに、必ずしも垂直方向または水平方向にスケーリングすることなく、PHPアプリケーションの速度を上げる方法を紹介します。
Varnish Cacheとは何ですか、なぜそれを使用するのですか
Varnish cacheは、httpリバースプロキシのキャッシュとも呼ばれるwebアプリケーションアクセラレータです。 それはあなたのクライアント(すなわちユーザー)とあなたのwebサーバーの間の中間の人のように動作します。 つまり、webサーバーが常に特定のコンテンツの要求を直接聞くのではなく、Varnishが責任を負うことになります。
リクエストが初めて入ったら、PhpのVarnishは適切な応答のためにwebサーバーにそれを指示します。 この応答は、クライアントに送信される前にPHPのVarnishによってキャッシュされます。 興味深いことに、そのようなコンテンツに対する後続の要求は、webサーバーに直接行くのではなく、Varnish cacheから直接提供されます。 これにより、サーバーが起動されないため、webアプリケーションは複数のユーザーからの膨大な数の同時要求を管理できます。 これはあなたの適用のための性能の魔法の増加で起因する。
PHP VarnishはVarnish Configuration Language(VCL)を使用して、リクエストを操作するロジックを追加することで動作を変更できます。 Webサーバーから戻ってくる応答の操作、cookieの削除、または応答へのヘッダーの追加ができます。
ワニスワークフロー
Get/some-web-page(client)—→Cache–→Get/some-web-page(Server)–→Cache–→クライアントに戻ります。

ページへの最初の要求に約200msかかると仮定しましょう。
これで、そのようなページのコンテンツを完全にキャッシュすると、フローが完全に変更され、クライアントから同じページへの要求は、Varnishがすでにキャッ 以下の図を見てください:
GET/some-web-page(client)-→Cache(HIT)。 –>とクライアントに戻る
ページへの後続の要求10ms…..
素晴らしいでしょうか?
したがって、バックエンドサーバーに送信されるリクエストの数をできるだけ減らすことが考えられます。 これにより、webアプリケーションのページレンダリング速度が向上します。
Varnish設定の概要
Varnishとそのキャッシュ機能の基本的な導入を進めてきたので、Varnishを設定してPHPアプリケーションに使用する時間になりました。 Varnishを使い始めるのは簡単です。 適切に設定するには、GitHubから既存のアプリケーションを使用してプルし、DigitalOceanサーバーにデプロイします。 その後、ワニスを設定します。
次に、DigitalOceanで無料アカウントを設定し、それが完了したら、「作成」ボタンをクリックし、ドロップダウンから「Droplets」を選択して新しいdropletを作成します。
下にスクロールしてUbuntu16.04を選択し、ドロップレットのサイズを選択する必要があることに注意してください。
SSHキーがある場合は、下にスクロールして追加します。 そうしないと、受信トレイでdropletのデフォルトパスワードを確認する必要があります。 次に、ホスト名を追加します。 私はmine varnish-demoという名前を付けました。 次に、[作成]をクリックして、液滴の作成を開始します。
処理が完了すると、新しい液滴が液滴のリストに表示されます。 先に進み、IPアドレスを使用してdropletにSSHを追加します。



コアWebバイタルの更新
電子ブックの準備をしなさいトラフィックを失うことを開始する前に、あなたのウェブサイトを高速化します。
ありがとうございます
あなたのリストはあなたの受信トレイへの道にあります。
Nginx web serverをインストール
パッケージリストを更新してNginxをインストールできるようになりました。 これを実行するには、次のコマンドを実行します:
sudo apt updatesudo apt install -y nginx
- 注:-yフラグは、インストール中に尋ねられた質問に対するデフォルトの回答で応答することです
Ubuntu16.04では、Nginxはインストール時に実行を開始するように事前に設定されているため、インストールが完了すると、ブラウザでdropletのIPアドレスにアクセスできます:
http://server_domain_or_ip
GitHubからデモをプル
私はGitHubからサンプルプロジェクトをプルするためにGitを使用します、それはUbuntu16.04にプリインストールされています。 サーバーに既にインストールされているかどうかを確認するには、以下のコマンドを使用します:
git -v
Gitがデフォルトでインストールされていないというメッセージが表示された場合は、次のコマンドを実行してインストールする必要があります:
apt install -y git
次に、Nginx webサーバーのデフォルトページを格納するのと同じフォルダを使用する必要があるため、publicディレクトリに移動します:
cd/var/www
htmlフォルダを削除して再作成し、そこに移動します:
rm -rf htmlmkdir htmlcd html
ここで、リポジトリ
// Install projectgit clone https://github.com/yemiwebby/varnish-demo.git
のクローンを作成します。これで、サンプルプロジェクトがサーバーにインストールされました。 しかし、それは今のところアクセスできません、そしてそれは私たちがPHPをインストールしていないからです。 そうしよう
あなたも好きかもしれません:PhpでMemcachedを使用する
PHPをインストールし、PHPプロセッサを使用するようにNginxを設定する
Nginxには、他のwebサーバーのようなネイ Php-fpmという名前のソフトウェアをインストールし、NginxにすべてのPHPリクエストを渡すように指示します。 Webサーバーのルートディレクトリに戻り、次のコマンドを実行してPHP-FPMモジュールをインストールします:
$ cd ~$ sudo apt install php-fpm
インストールプロセスが完了すると、インストールされたPHPプロセッサを使用するようにNginxを設定できます。 デフォルトのNginxサーバーブロック設定ファイルを開きます:
sudo nano /etc/nginx/sites-available/default
その内容を次のように置き換えます:
server { listen 80 default_server; listen :80 default_server; root /var/www/html; index index.php; server_name YOUR_SERVER_IP; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; }}
完了したら、Nginxをリロードして必要な変更を加えます:
$ sudo systemctl reload nginx
これで、dropletのIPアドレスを使用して、お気に入りのwebサーバーのページにアクセスできます:
http://ip_address
Varnishを使用したキャッシュの有効化
ページを調べてネットワークタブからHTTPヘッダーを表示すると、Varnishがインストールされていないか、要求を処理するように ウェブサーバーにVarnishをインストールすることで、それを変更しましょう。 これを行うには、次のコマンドを入力します:
$ sudo apt install -y varnish
これにより、サーバーにVarnish cacheをインストールするプロセスが実行されます。 インストールが完了したら、次のコマンドでVarnishを起動して有効にします:
systemctl start varnishsystemctl enable varnish
デフォルトでは、Varnishはポート6081でリッスンします。 これを確認するには、ブラウザを開き、droplet IPアドレスに再度アクセスしますが、今回は以下のように:6081を追加してください。
webアプリケーションのコンテンツをロードするwebサーバーであるNginxは、ポート80で実行されます。 Varnishができるだけ早くページをキャッシュしてレンダリングする責任を負うためには、webアプリクライアントとサーバーの間に配置する必要があります。 これにより、主にポート80上にあるサーバーへの要求がVarnishによって傍受され、キャッシュヒットかミスかに応じて、Varnishがそれに応じて行動し、適切な応答を返
ポート80にワニスを設定し、ポート8080にNginxを設定してプロセスを変更します。 これを行うには、サイトのNginx設定ファイルを再度編集します。 私たちの場合、このファイルは/etc/nginx/sites-available/defaultです。 80をに変更して下さい8080:
server { listen 8080 default_server; listen :8080 default_server; root /var/www/html;}
ポート80は現在、ワニスのために自由に使用することができます。 Nginx設定をリロードします:
sudo systemctl reload nginx
そして、ポート8080が追加されたIPアドレスを使用してウェブサイトの可用性を確認します。
以前にワニスをインストールしたとき、二つの設定ファ 彼らは:
- /etc/default/varnish
- /etc/varnish/default.vcl
これらのファイルは、Varnishのポートを開いたり、要求を操作したりするなどの設定に使用します。 さて、このファイルを開きます/etc/default/varnish:
sudo nano /etc/default/varnish
# ポート6081でリッスン、localhostでの管理:6082に転送し、要求に基づいてvclファイルによって選択された一つのコンテンツサーバに転送します。
#oneコンテンツサーバに転送します。
DAEMON_OPTS=”-a”:6081 \
-T localhost:6082 \
-f/etc/varnish/default.vcl\
-s/etc/varnish/secret\
-s malloc,256m”
上記の行を探して、-a:6081を-a:80に変更します。
次に、/etc/varnish/defaultファイルを開きます。vcl:
sudo nano /etc/varnish/default.vcl
そして、デフォルトのバックエンドがポート8080に設定されていることを確認してください。 以下の行を探して、確認してください。ポートは8080です。
#デフォルトのバックエンド定義。 これをコンテンツサーバーを指すように設定します。
backend default { .host = "127.0.0.1"; .port = "8080"; }
次はワニスをコピーすることです。私たちのsystemdディレクトリにサービスファイル。 これにより、systemdはポート80でVarnishを起動できます。 以下のコマンドを実行します:
$ sudo cp /lib/systemd/system/varnish.service /etc/systemd/system/
これにより、Varnishサービスファイルがコピーされます。
次に、それを開きます:
$ sudo nano /etc/systemd/system/varnish.service
ExecStart行を探します:
Description=Varnish HTTP acceleratorDocumentation=https://www.varnish-cache.org/docs/4.1/ man:varnishdType=simpleLimitNOFILE=131072LimitMEMLOCK=82000ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.v$ExecReload=/usr/share/varnish/reload-vclProtectSystem=fullProtectHome=truePrivateTmp=truePrivateDevices=trueWantedBy=multi-user.target//ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
次に、-F-a:6081を-F-a:80に変更します。 ファイルを保存して終了します。
netstatコマンドを使用してネットワーク統計を確認する場合:
:~# netstat -plntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6081 0.0.0.0:* LISTEN 13257/varnishd
tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 13257/varnishd
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2440/nginx -g daemo
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1648/sshd
tcp6 0 0 :::6081 :::* LISTEN 13257/varnishd
tcp6 0 0 :::8080 :::* LISTEN 2440/nginx -g daemo
tcp6 0 0 :::22 :::*LISTEN1648/sshd
ワニスキャッシュがポート6081でまだ実行されていることがわかります。 を再起動して変更してください。:
systemctl daemon-reloadsystemctl restart varnish
また、Nginxを再起動します。
sudo service nginx restart
この時点で、webページのIPアドレスにアクセスすると、webサイトはまだ完全に動作していることがわかりますが、HTTPヘッダーを調べると、Varnishがインストールされ
あなたも好きかもしれません: PHP Opcacheの統合&アプリケーションをパフォーマンスで大きく勝つ
Varnish internal
Varnishの概要webアプリケーションのキャッシュコンテンツの処理を完了する際に、いくつかのルーチンをトリガします。 最も重要なルーチンのいくつかと、コンテンツが光の速度で配信され、webアプリケーションのパフォーマンスが向上するようにするためにそれぞれが何を:
- sub vcl_recv{}:これは、クライアントが要求を受け入れた瞬間にVarnishがヒットする最初の行です。
- sub vcl_backend_response{}:このコールバックは応答の後に呼び出され、バックエンドサーバーから取得されます。 このブロックでは、ここで応答を変更することもできます。
- sub vcl_backend_fetch{}:
- sub vcl_deliver{}:これは、クライアントに応答を送信する前にvclがヒットする最後のルーチンです。 ここでは、クライアントに表示させたくないものを削除するなど、簡単にいくつかのクリーンアップを行うことができます。
Q:Varnish cacheをクリアするには?
: コマンドラインからすべてのVarnishキャッシュをパージするには、banコマンド
varnishadm”banを使用します。url。”#すべてのUrlに一致します
ホスト名を記述することで、特定のキャッシュを禁止することもできます
varnishadm”ban req.http…ホスト==xxx.com”
Q:Varnish cacheを無効にする方法は?
A:あなたは簡単に編集することで、あなたのウェブサイトからワニスを無効にすることができます.次のコードを含むhtaccessファイル:
ヘッダー add”Cache-Control””no-cache”
これは一時的にあなたのウェブサイトからワニスを無効にします。 後で次のコードを削除することで、Varnishを有効にできます。
: CLIでVarnish cacheをパージするには?
A:Varnishサービスを再起動するだけで、Varnishキャッシュを消去またはパージできます。 これにより、デフォルトでメモリに格納されているため、すべてのVarnishキャッシュが消去されます。
/etc/varnish restart
または
service varnish restart
Q:Varnishキャッシュが機能しているかどうかを確認するにはどうすればよいですか?
A:Varnishサービスが正常に動作しているかどうかを確認するには、サービスのアクティブ/非アクティブ状態を知ることができるX-Varnishヘッダーを使用します。 それがキャッシュに当たっているかどうかをより詳細に調べるには、x-Cacheヘッダーを使用してキャッシュの完全な分析を取得します。
Q:Varnish cache vs Memcached:どちらが優れていますか?
A:両方のVarnish&Memcachedは特定のキャッシュドメインで便利ですが、両者の間にはいくつかの違いがあります。
Memcachedは、アプリケーション資産をキャッシュするためのメモリ内の分散バックエンドとして使用できます。
一方、VarnishはアプリケーションのHTTP要求を外部キャッシュするリバースプロキシとして使用されます。
Memcachedは、データベースからの結果をキャッシュし、GETメソッドの変更をほとんど必要としないため、汎用キャッシュシステムと呼ぶことができます。
一方、Varnishはwebサーバーの背後で動作し、webページをキャッシュし、コードの変更を必要としません。
最後の言葉
この記事では、あなたがワニスでできることの表面をほとんど傷つけていません。 それはあなたがそれではるかに多くを行うことができるように強力です。 Webアプリケーションのコンテンツをキャッシュして要求を処理できることとは別に、Varnish cacheはロードバランサーなどとして使用することもできます。
ワニスとそれを使用して実行できる他の素晴らしい構成の詳細については、ここで公式ドキュメントを確認してください。 以下のコメントセクションにコメント、質問、または提案を残して自由に感じます。
この記事を共有する
でのカスタマーレビュー
“Cloudways hostingは最高の顧客サービスとホスティング速度の1つを持っています」
Sanjit C
Olususi k Oluyemi
技術愛好家、プログラミングフリーク、新しい技術を受け入れるのが大好きなweb開発中毒者。