検索
ホームページバックエンド開発PHPチュートリアルLaravel はキャッシュを使用してデータをキャッシュし、データベースクエリの負荷を軽減します、laravelcaching_PHP チュートリアル

Laravel は、キャッシュを使用してデータをキャッシュし、データベースクエリのプレッシャーを軽減する、laravelcaching

この記事では、Laravel がキャッシュを使用してデータをキャッシュし、データベースクエリのプレッシャーを軽減する例について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

昨日、静的ページキャッシュを生成するのと同じような効果を得るためにブログのトップページをキャッシュしたいと思い、グループの全員にキャッシュする方法を尋ねましたが、全員が非常に忙しく、あまり返事がありませんでした。実際にドキュメントを読んでみると、キャッシュの部分については見たことがありましたが、名前が示すとおり、キャッシュについては特に触れたことはありませんでした。私のニーズに関連して、詳しく調べてみたところ、いくつかの簡単な手順を実行しただけで、ホームページを変更し、Firebug でテストし、解析時間を数十ミリ秒改善したことがわかりました。もちろん、そんな必要があるのか​​と笑う人もいるでしょう。実際、ここにはあまり訪問者がいないだけです(実際には誰も戻ってきません、笑)。 .)、そして第二に、私がホームページで行ったクエリはこれまでのところ非常に少なく、すべてのブログ投稿を取得するためのもので、7 つまたは 8 つ、場合によっては 10 つ以上のクエリがあったとしても、その効果はあると思います。 (もちろん、レイモンド兄弟は、より高度な専用キャッシュ (memcached など) の使用についても言及しましたが、これは、サーバーを制御してソフトウェアを自由にインストールできる場合、またはサーバーがすでにインストールされている場合にのみ実現できます)私のニーズは比較的単純であり、それを実行する環境がないため、ここでは考慮しません)

早速、私の具体的なニーズについて話していきましょう:

1. ホームページにデータ キャッシュを実装します。期限切れになっていないキャッシュがある場合、データベースはチェックされません (もちろん、PHP による処理が必要です)。

2. 指定したキャッシュを更新する機能を実装します(ここにはホームページしかないので、ホームページのキャッシュを更新するだけです。この機能はadminモジュールの下に実装しました

詳細な実装:

1. ドキュメントを確認して、私のニーズを達成するのに役立つモジュールを見つけてください

ドキュメントを確認したところ、名前が示すように、キャッシュというモジュールがあることがわかりました。まず見てみましょう。

1. http://laravel.com/docs/cache/config これはlaravelのCachingモジュールの実装です

2. 文書には次のような説明があります:

基本 あなたのアプリケーションが、ユーザーによって投票された最も人気のある 10 曲を表示していると想像してください。誰かがあなたのサイトにアクセスするたびに、これらの 10 曲を検索する必要があるでしょうか? Laravel のキャッシュを使用すると、アプリケーションが大幅に高速化できます。

私は単に次のように理解しています:

あなたのアプリがユーザーによって投票された最も人気のある 10 曲を表示すると仮定します。アプリケーションを高速化するために 10 分または 1 時間クリックしたい場合、ユーザーが Web サイトにアクセスするたびにこれら 10 曲を確認する必要がありますか? , Laravel のキャッシュモジュールを使用すると、この作業が非常に簡単になります

さて、この段落から、これが現在のニーズを完全に満たしていることがわかりました。次に、対応する使用方法と API を段階的に見つける必要があります。

2. 対応するAPIなどを学習します

1. 上記のドキュメントを下に見て、次の説明を参照してください。

デフォルトでは、Laravel はファイル システム キャッシュ ドライバーを使用するように構成されています。このドライバーに問題がなければ、ファイル システム ドライバーはキャッシュされたアイテムをそのままキャッシュ ディレクトリに保存します。他の設定は必要ありません。すぐに使用できます。

私は単に次のように理解しています: デフォルトでは、Laravel はファイル システムをキャッシュ ドライバーとして使用します。これは、ファイル システム ドライバーによってキャッシュされたデータがキャッシュ ディレクトリ内のファイルに保存されます。他の構成の場合は、そのまま使用を開始してください。

もちろん、これは私のアイデアにも沿っています。実際には、ユーザーが再度アクセスしたときに、キャッシュされた静的ページを直接出力するだけです。より高度な要件がある場合は、データベース ドライバー、memcached、redis ドライバーなどの他のドライバーを使用することもできます。これらは非常に優れており強力です!

2. 次に、ユースケースを確認し、使用方法を確認します

ユースケースドキュメントはここにあります: http://laravel.com/docs/cache/usage

ご覧のとおり、get、put、forever、remember、has、forget などのメソッドがあります。これらのメソッドは基本的に「文字通り」使用できます (笑)

具体的な使い方のドキュメントは十分に詳しく説明されていますが、使い方は一目瞭然なので詳細は説明しません

3. 具体的な実装

1. 私のホームページの前のコード

リーリー

これは私のホームページのコントローラーです。機能は 1 つだけです。それは、誰かがアクセスするたびに、新しいブログ投稿がない場合は、そのテーブルをチェックする必要があります。公表されている表は確かに不正確な部分が多いので要チェックです2. 以下は私の修正後のコードです:

class Home_Controller extends Base_Controller {
  public function get_index() {
    // 添加静态缓存支持
    // 如果不存在静态页缓存就立即缓存
    if ( !Cache::has('staticPageCache_home') ) {
      $data = array();
      $posts = Post::with('user')
            ->join('users', 'users.id', '=', 'posts.post_author')
              -> order_by('posts.created_at', 'desc')
                ->get(array('posts.id', 'posts.support', 'posts.against', 'users.username', 'posts.post_author', 'posts.post_title', 'posts.post_body'));
      foreach($posts as $p){
        $data[] = array(
          'id'   => $p -> id,
          'support' => $p -> support,
          'against' => $p -> against,
          'username'=> $p -> username,
          'post_author' => $p -> post_author,
          'post_title' => $p -> post_title,
          'post_body'  => $p -> post_body
        );
      }
      $res = View::make('home.index')
        -> with('posts', $data);
      Cache::forever('staticPageCache_home', $res);
    }
    // 返回缓存的数据
    return Cache::get('staticPageCache_home');
  }
}

这里我用到了三个api

1). Cache::has ,这个判断是说如果当前不存在 staticPageCache_home 这个名字的缓存, 就立即去取数据

2). Cache::forever,  这个从用例文档里面可知是"永久缓存"的意思, 因为我一般都是很勤劳的,如果发表了博文,自己再去后台立即刷新一下缓存就好了, 所以不需要设置过期啊失效时间之类的, 当然这个是要按各自的具体需求来的

3). Cache::get , 这句是从缓存里面取出 staticPageCache_home 这个名字的缓存, 然后作为响应内容返回

嗯, 就这么简单, 呵呵, 一个基本的缓存功能就完成了, laravel的确是不错地!

3. 为后台添加刷新缓存功能

还是贴代码吧, 不过也很简单:

// 刷新首页缓存(暂时只支持首页)
public function get_refreshcache() {
  /*
    @var $GID admin组id
  */
  $GID = 1;
  if ( Auth::user() -> gid === 1 ) {
    $data = array();
    $posts = Post::with('user')
        ->join('users', 'users.id', '=', 'posts.post_author')
        -> order_by('posts.created_at', 'desc')
        ->get(array('posts.id', 'posts.support', 'posts.against', 'users.username', 'posts.post_author', 'posts.post_title', 'posts.post_body'));
    foreach($posts as $p){
      $data[] = array(
        'id'   => $p -> id,
        'support' => $p -> support,
        'against' => $p -> against,
        'username'=> $p -> username,
        'post_author' => $p -> post_author,
        'post_title' => $p -> post_title,
        'post_body'  => $p -> post_body
      );
    }
    $res = View::make('home.index')
        -> with('posts', $data);
    Cache::forever('staticPageCache_home', $res);
    return '刷新首页缓存成功!';
  }
  return '对不起,只有管理员组才可进行此操作!';
}

我给后台添加了一个项目, 对应这个方法, 方法内容和首页的大同小异, 取数据, 然后Cache::forever 刷新一下缓存,就这么简单,当然了,上面的Auth::user() 判断是个简单的判断,只有管理员组才能进行刷新操作,呵呵

嗯, 全部内容就这么多, 很简单, 欢迎童鞋们拍砖指正!

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

  • Laravel框架中实现使用阿里云ACE缓存服务
  • Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
  • 基于laravel制作APP接口(API)
  • PHP框架Laravel学习心得体会
  • 使用AngularJS和PHP的Laravel实现单页评论的方法
  • PHP IDE PHPStorm配置支持友好Laravel代码提示方法
  • Laravel 5 框架入门(四)完结篇
  • Laravel 5 框架入门(三)
  • Laravel 5 框架入门(二)构建 Pages 的管理功能
  • Laravel 5 框架入门(一)
  • Laravel 5框架学习之用户认证
  • Laravel 5框架学习之Eloquent 关系
  • Laravel 5框架学习之子视图和表单复用
  • Laravel 5框架学习之表单验证
  • Laravel 5框架学习之日期,Mutator 和 Scope

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1110070.htmlTechArticleLaravel使用Caching缓存数据减轻数据库查询压力的方法,laravelcaching 本文实例讲述了Laravel使用Caching缓存数据减轻数据库查询压力的方法。分享...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター