Laravelでページネーションを静的にする方法
1. Laravel のページネーションをキャッシュで静的化するには、以下手順で行います。
- まず、config/cache.php の設定ファイルで、ファイルキャッシュドライバや Redis キャッシュドライバなど、適切なキャッシュドライバを選択する必要があります。
- コントローラメソッド内でLaravelのペジネーションクエリメソッドを利用してデータを取得しキャッシュに保存します。例:
use Illuminate\Support\Facades\Cache;
public function index()
{
$key = 'posts_page_' . request('page', 1); // 根据当前页数生成缓存的键名
$minutes = 60; // 缓存的时间,单位为分钟
$posts = Cache::remember($key, $minutes, function () {
return Post::paginate(10); // 使用paginate方法进行分页查询
});
return view('posts.index', compact('posts'));
}
上記コードでは Cache::remember メソッドを使用し、ページネーションクエリーの結果をキャッシュに保存しておき、再利用できるようにしています。
- キャッシュされたデータを基に、ビューテンプレートにレンダリングします。たとえば、
@foreach($posts as $post)
<div>{{ $post->title }}</div>
<!-- 其他内容 -->
@endforeach
{{ $posts->links() }} <!-- 显示分页链接 -->
上記のコードでは、foreachループを使用してデータを読み込み、$posts->links()メソッドでページネーションのリンクを表示しています。
上記の手順を踏むことで、ページングデータを静的化してキャッシュに格納することができ、静的化の効果が得られます。同一ページへのアクセス時には、毎回ページングクエリを再実行することなく、キャッシュから直接データを読み出すようになります。これによりデータベースの負荷を軽減し、サイトのパフォーマンスを向上させることができます。