[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-menu":3,"site-settings":14,"tag-php":21},{"items":4},[5,8,11],{"href":6,"label":7},"\u002F","Mới nhất",{"href":9,"label":10},"\u002Fcategory\u002Fdich-vu","Dịch vụ",{"href":12,"label":13},"\u002Fabout","Về tôi",{"siteName":15,"siteDescription":16,"contactEmail":17,"phone":18,"githubUrl":19,"facebookUrl":20},"vdhoangson.com","Ghi chép về lập trình, hệ thống và những điều học được trên đường làm sản phẩm.","contact@vdhoangson.com","+84 387 324 112","https:\u002F\u002Fgithub.com\u002Fvdhoangson","",{"items":22,"total":82,"page":83,"pageSize":84},[23,59],{"id":24,"wordpressId":25,"title":26,"slug":27,"excerpt":28,"contentHtml":29,"status":30,"authorName":31,"seoTitle":26,"seoDescription":28,"featuredMediaId":32,"featuredMedia":33,"categories":45,"tags":52,"publishedAt":57,"createdAt":57,"updatedAt":58},"412a547f-adb6-4abe-a967-46bd3cff4e59",166,"Laravel Cache – Phân biệt put, set, remember, forever, và add","laravel-cache-phan-biet-put-set-remember-forever-va-add","Caching trong Laravel là một trong những tính năng mạnh mẽ nhất giúp tăng hiệu suất ứng dụng, giảm tải database và tăng tốc độ phản hồi. Tuy nhiên, nhiều dev hay bị nhầm lẫn giữa các method như put, set, remember, forever, hay add. Bài này sẽ phân tích chi tiết sự khác nhau […]","\n\u003Cp class=\"wp-block-paragraph\">Caching trong Laravel là một trong những tính năng mạnh mẽ nhất giúp tăng hiệu suất ứng dụng, giảm tải database và tăng tốc độ phản hồi. Tuy nhiên, nhiều dev hay bị nhầm lẫn giữa các method như \u003Ccode>put\u003C\u002Fcode>, \u003Ccode>set\u003C\u002Fcode>, \u003Ccode>remember\u003C\u002Fcode>, \u003Ccode>forever\u003C\u002Fcode>, hay \u003Ccode>add\u003C\u002Fcode>. Bài này sẽ phân tích chi tiết sự khác nhau và khi nào nên dùng từng cái.\u003C\u002Fp>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">1. \u003Ccode>put()\u003C\u002Fcode> và \u003Ccode>set()\u003C\u002Fcode>\u003C\u002Fh2>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">\u003Ccode>put()\u003C\u002Fcode>\u003C\u002Fh3>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>Cache::put('username', 'sonvo', 3600);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Lưu giá trị vào cache với key \u003Ccode>username\u003C\u002Fcode>.\u003C\u002Fli>\n\n\n\n\u003Cli>Thời gian sống (TTL) là 3600 giây (1 giờ).\u003C\u002Fli>\n\n\n\n\u003Cli>Nếu key đã tồn tại → ghi đè.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">\u003Ccode>set()\u003C\u002Fcode>\u003C\u002Fh3>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>Cache::set('username', 'sonvo', 3600);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Thực chất giống \u003Cstrong>hệt\u003C\u002Fstrong> \u003Ccode>put()\u003C\u002Fcode>.\u003C\u002Fli>\n\n\n\n\u003Cli>Được thêm vào để tuân thủ \u003Cstrong>PSR-16 (Simple Cache Standard)\u003C\u002Fstrong>.\u003C\u002Fli>\n\n\n\n\u003Cli>Nếu bạn muốn code mang tính chuẩn, portable giữa các framework\u002Flib khác → dùng \u003Ccode>set()\u003C\u002Fcode>.\u003C\u002Fli>\n\n\n\n\u003Cli>Nếu code thuần Laravel → \u003Ccode>put()\u003C\u002Fcode> và \u003Ccode>set()\u003C\u002Fcode> như nhau.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">✅ \u003Cstrong>Khi dùng:\u003C\u002Fstrong> muốn lưu cache có thời gian hết hạn.\u003C\u002Fp>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">2. \u003Ccode>remember()\u003C\u002Fcode>\u003C\u002Fh2>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>Cache::remember('user:1', 3600, function () {\n    return User::find(1);\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Nếu key \u003Ccode>user:1\u003C\u002Fcode> \u003Cstrong>chưa có trong cache\u003C\u002Fstrong> → chạy callback (query DB), lưu vào cache trong 3600 giây, rồi trả về.\u003C\u002Fli>\n\n\n\n\u003Cli>Nếu key đã có → lấy luôn từ cache.\u003C\u002Fli>\n\n\n\n\u003Cli>Giúp tránh code lặp kiểu: \u003Ccode>if (Cache::has('user:1')) { return Cache::get('user:1'); } else { $user = User::find(1); Cache::put('user:1', $user, 3600); return $user; }\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">✅ \u003Cstrong>Khi dùng:\u003C\u002Fstrong> muốn cache dữ liệu tốn chi phí lấy (DB query, API call) và tự động lấy lại nếu chưa có.\u003C\u002Fp>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">3. \u003Ccode>forever()\u003C\u002Fcode>\u003C\u002Fh2>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>Cache::forever('site_name', 'MiniApp');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Lưu cache \u003Cstrong>vĩnh viễn\u003C\u002Fstrong> (cho đến khi bị xoá bằng \u003Ccode>forget()\u003C\u002Fcode> hoặc \u003Ccode>flush()\u003C\u002Fcode>).\u003C\u002Fli>\n\n\n\n\u003Cli>Không có TTL (time-to-live).\u003C\u002Fli>\n\n\n\n\u003Cli>Lưu ý: “vĩnh viễn” ở đây phụ thuộc vào driver. Ví dụ:\n\u003Cul class=\"wp-block-list\">\n\u003Cli>File \u002F Redis \u002F Database → giữ mãi cho đến khi xóa.\u003C\u002Fli>\n\n\n\n\u003Cli>APCu \u002F Memcached → vẫn có thể mất nếu server restart.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">✅ \u003Cstrong>Khi dùng:\u003C\u002Fstrong> dữ liệu ít thay đổi, quan trọng, và muốn giữ lâu dài (ví dụ: config tĩnh).\u003C\u002Fp>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">4. \u003Ccode>add()\u003C\u002Fcode>\u003C\u002Fh2>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>Cache::add('token', 'ABC123', 600);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Chỉ thêm vào cache nếu key \u003Cstrong>chưa tồn tại\u003C\u002Fstrong>.\u003C\u002Fli>\n\n\n\n\u003Cli>Nếu key đã tồn tại → \u003Cstrong>bỏ qua\u003C\u002Fstrong> (không ghi đè).\u003C\u002Fli>\n\n\n\n\u003Cli>Trả về \u003Ccode>true\u003C\u002Fcode> nếu thêm thành công, \u003Ccode>false\u003C\u002Fcode> nếu thất bại.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">✅ \u003Cstrong>Khi dùng:\u003C\u002Fstrong> lưu token, session, hoặc dữ liệu chỉ nên được set một lần và không được ghi đè.\u003C\u002Fp>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">🔍 So sánh nhanh\u003C\u002Fh2>\n\n\n\n\u003Cfigure class=\"wp-block-table\">\u003Ctable class=\"has-fixed-layout\">\u003Cthead>\u003Ctr>\u003Cth>Method\u003C\u002Fth>\u003Cth>Ghi đè key cũ?\u003C\u002Fth>\u003Cth>Có TTL không?\u003C\u002Fth>\u003Cth>Callback hỗ trợ?\u003C\u002Fth>\u003Cth>Ghi chú\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>put\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>✅ Có\u003C\u002Ftd>\u003Ctd>✅ Có\u003C\u002Ftd>\u003Ctd>❌ Không\u003C\u002Ftd>\u003Ctd>Chuẩn Laravel\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>set\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>✅ Có\u003C\u002Ftd>\u003Ctd>✅ Có\u003C\u002Ftd>\u003Ctd>❌ Không\u003C\u002Ftd>\u003Ctd>Alias theo PSR-16\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>remember\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>✅ Có\u003C\u002Ftd>\u003Ctd>✅ Có\u003C\u002Ftd>\u003Ctd>✅ Có\u003C\u002Ftd>\u003Ctd>Tự động query\u002Fcache\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>forever\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>✅ Có\u003C\u002Ftd>\u003Ctd>❌ Không\u003C\u002Ftd>\u003Ctd>❌ Không\u003C\u002Ftd>\u003Ctd>Cache vĩnh viễn\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>add\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>❌ Không\u003C\u002Ftd>\u003Ctd>✅ Có\u003C\u002Ftd>\u003Ctd>❌ Không\u003C\u002Ftd>\u003Ctd>Chỉ set nếu chưa có\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Ffigure>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">🚀 Kết luận\u003C\u002Fh2>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>\u003Cstrong>\u003Ccode>put\u003C\u002Fcode> \u002F \u003Ccode>set\u003C\u002Fcode>\u003C\u002Fstrong>: lưu cache tạm thời (có TTL).\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>\u003Ccode>remember\u003C\u002Fcode>\u003C\u002Fstrong>: thông minh hơn, chỉ query khi cần.\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>\u003Ccode>forever\u003C\u002Fcode>\u003C\u002Fstrong>: dữ liệu vĩnh viễn.\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>\u003Ccode>add\u003C\u002Fcode>\u003C\u002Fstrong>: chỉ lưu khi chưa tồn tại.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">👉 Khi code thực tế:\u003C\u002Fp>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Dữ liệu thay đổi thường xuyên → \u003Ccode>put\u003C\u002Fcode> hoặc \u003Ccode>set\u003C\u002Fcode>.\u003C\u002Fli>\n\n\n\n\u003Cli>Dữ liệu cần tránh query nhiều lần → \u003Ccode>remember\u003C\u002Fcode>.\u003C\u002Fli>\n\n\n\n\u003Cli>Dữ liệu config\u002Ftĩnh → \u003Ccode>forever\u003C\u002Fcode>.\u003C\u002Fli>\n\n\n\n\u003Cli>Trường hợp tránh ghi đè → \u003Ccode>add\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n","published","vdhoangson@gmail.com","a306442c-6e50-4776-83a2-c5127e5e933e",{"id":32,"wordpressId":34,"filename":35,"storageKey":36,"sourceUrl":37,"mimeType":38,"altText":20,"caption":39,"width":40,"height":41,"createdAt":42,"updatedAt":43,"url":44},16253,"laravel-cache.jpg","wordpress\u002F2025\u002F07\u002Flaravel-cache.jpg","https:\u002F\u002Fvdhoangson.com\u002Fwp-content\u002Fuploads\u002F2025\u002F07\u002Flaravel-cache.jpg","image\u002Fjpeg",null,1600,900,"2025-09-18T14:17:45.000Z","2026-10-15T04:59:31.204Z","\u002Fuploads\u002Fwordpress\u002F2025\u002F07\u002Flaravel-cache.jpg",[46],{"id":47,"wordpressId":48,"name":49,"slug":50,"parentId":51},"5f89b685-533f-4c09-85fa-d018f8fd71a4",3,"Laravel","laravel","f6aff5ed-b85e-45e6-bbdb-08788be09d67",[53],{"id":54,"wordpressId":55,"name":56,"slug":56},"370739a0-0789-4ab8-83d6-6e3e8138a710",13,"php","2025-07-07T02:57:04.000Z","2025-09-18T14:52:51.000Z",{"id":60,"wordpressId":61,"title":62,"slug":63,"excerpt":64,"contentHtml":65,"status":30,"authorName":31,"seoTitle":62,"seoDescription":64,"featuredMediaId":66,"featuredMedia":67,"categories":76,"tags":78,"publishedAt":80,"createdAt":80,"updatedAt":81},"08fcb0ab-1ea1-4bc7-961a-b28f8e7d624e",1965,"Laravel Octane – Tăng Tốc Ứng Dụng Laravel Lên Một Tầm Cao Mới","laravel-octane-tang-toc-ung-dung-laravel-len-mot-tam-cao-moi","🚀 Laravel luôn nổi tiếng là một framework PHP dễ dùng, mạnh mẽ và tiện lợi cho việc xây dựng ứng dụng web. Tuy nhiên, trong các ứng dụng cần hiệu năng cao hoặc xử lý lượng request lớn, Laravel truyền thống có thể trở nên chậm chạp do bản chất Stateless và việc khởi […]","\n\u003Cp class=\"wp-block-paragraph\">🚀 Laravel luôn nổi tiếng là một framework PHP dễ dùng, mạnh mẽ và tiện lợi cho việc xây dựng ứng dụng web. Tuy nhiên, trong các ứng dụng cần \u003Cstrong>hiệu năng cao\u003C\u002Fstrong> hoặc xử lý \u003Cstrong>lượng request lớn\u003C\u002Fstrong>, Laravel truyền thống có thể trở nên chậm chạp do bản chất \u003Cstrong>Stateless\u003C\u002Fstrong> và việc \u003Cstrong>khởi động lại toàn bộ ứng dụng trong mỗi request\u003C\u002Fstrong>.\u003C\u002Fp>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">Laravel Octane ra đời để giải quyết vấn đề này.\u003C\u002Fp>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">🧠 Laravel Octane Là Gì?\u003C\u002Fh2>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">\u003Cstrong>\u003Ca href=\"https:\u002F\u002Flaravel.com\u002Fdocs\u002F12.x\u002Foctane\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Octane\u003C\u002Fa>\u003C\u002Fstrong> là một package được giới thiệu từ Laravel 8, giúp \u003Cstrong>nâng cao hiệu năng\u003C\u002Fstrong> bằng cách \u003Cstrong>giữ ứng dụng Laravel “sống” trong bộ nhớ\u003C\u002Fstrong> thay vì phải khởi động lại trong mỗi request. Nó sử dụng \u003Cstrong>Swoole\u003C\u002Fstrong> hoặc \u003Cstrong>RoadRunner\u003C\u002Fstrong> làm server backend để chạy ứng dụng Laravel một cách lâu dài (persistent).\u003C\u002Fp>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">\u003Cstrong>Octane\u003C\u002Fstrong> biến Laravel thành một ứng dụng “long-living”, có nghĩa là:\u003C\u002Fp>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Khởi động framework một lần.\u003C\u002Fli>\n\n\n\n\u003Cli>Tái sử dụng bộ nhớ và các thành phần khởi tạo cho nhiều request.\u003C\u002Fli>\n\n\n\n\u003Cli>Giảm thời gian phản hồi và tăng thông lượng (requests\u002Fsec).\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">⚙️ Công Nghệ Đằng Sau Octane\u003C\u002Fh2>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">Laravel Octane hỗ trợ hai backend chính:\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">1. \u003Cstrong>Swoole\u003C\u002Fstrong>\u003C\u002Fh3>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Một extension cho PHP, cho phép chạy ứng dụng PHP theo mô hình event-loop.\u003C\u002Fli>\n\n\n\n\u003Cli>Hỗ trợ coroutine, HTTP server, WebSocket, TCP\u002FUDP, và nhiều tính năng mạnh mẽ khác.\u003C\u002Fli>\n\n\n\n\u003Cli>Cần cài đặt Swoole vào hệ thống.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">2. \u003Cstrong>RoadRunner\u003C\u002Fstrong>\u003C\u002Fh3>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Là một high-performance PHP application server được viết bằng Golang.\u003C\u002Fli>\n\n\n\n\u003Cli>Có khả năng chạy worker và quản lý lifecycle ứng dụng tốt hơn \u003Ccode>php-fpm\u003C\u002Fcode>.\u003C\u002Fli>\n\n\n\n\u003Cli>Cần file cấu hình \u003Ccode>.rr.yaml\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">✅ Ưu Điểm Của Laravel Octane\u003C\u002Fh2>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>🚀 \u003Cstrong>Tăng tốc độ xử lý request\u003C\u002Fstrong>: Thay vì mất 100-200ms khởi động Laravel mỗi request, Octane giúp giảm xuống chỉ còn vài ms.\u003C\u002Fli>\n\n\n\n\u003Cli>🔁 \u003Cstrong>Giữ session, database connection… trong bộ nhớ\u003C\u002Fstrong>: Giảm chi phí kết nối lặp lại.\u003C\u002Fli>\n\n\n\n\u003Cli>🧵 \u003Cstrong>Hỗ trợ xử lý song song (Concurrency)\u003C\u002Fstrong>: Cho phép xử lý nhiều tác vụ đồng thời, ví dụ như gọi API song song, xử lý background nhanh hơn.\u003C\u002Fli>\n\n\n\n\u003Cli>🧼 \u003Cstrong>Không cần queue system cho tác vụ nhỏ\u003C\u002Fstrong>: Với tính năng \u003Ccode>task()\u003C\u002Fcode> hoặc \u003Ccode>concurrently()\u003C\u002Fcode>, bạn có thể xử lý async ngay trong request.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">🛠️ Cài Đặt Laravel Octane\u003C\u002Fh2>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">Bước 1: Cài đặt Octane\u003C\u002Fh3>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>\u003Ccode>composer require laravel\u002Foctane\nphp artisan octane:install\n\u003C\u002Fcode>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">Chọn backend bạn muốn dùng: Swoole hoặc RoadRunner.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">Bước 2: Cài Swoole (nếu chọn)\u003C\u002Fh3>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>\u003Ccode>pecl install swoole\n\u003C\u002Fcode>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">Rồi thêm vào php.ini:\u003C\u002Fp>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>\u003Ccode>extension=swoole\n\u003C\u002Fcode>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">Bước 3: Chạy Octane Server\u003C\u002Fh3>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>\u003Ccode>php artisan octane:start\n\u003C\u002Fcode>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">Bạn sẽ thấy ứng dụng chạy ở địa chỉ: \u003Ccode>http:\u002F\u002F127.0.0.1:8000\u003C\u002Fcode>\u003C\u002Fp>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">🧪 So Sánh Hiệu Năng\u003C\u002Fh2>\n\n\n\n\u003Cfigure class=\"wp-block-table\">\u003Ctable class=\"has-fixed-layout\">\u003Cthead>\u003Ctr>\u003Cth>Công nghệ\u003C\u002Fth>\u003Cth>Requests\u002Fsecond (trung bình)\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>Laravel + Apache\u002Fnginx + PHP-FPM\u003C\u002Ftd>\u003Ctd>300 – 500 req\u002Fs\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Laravel Octane + Swoole\u003C\u002Ftd>\u003Ctd>1,000 – 5,000+ req\u002Fs\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Laravel Octane + RoadRunner\u003C\u002Ftd>\u003Ctd>1,500 – 10,000+ req\u002Fs\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Ffigure>\n\n\n\n\u003Cblockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n\u003Cp class=\"wp-block-paragraph\">Con số có thể thay đổi tùy vào cấu hình server, cache, DB, middleware…\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">⚠️ Những Điều Cần Lưu Ý\u003C\u002Fh2>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">1. \u003Cstrong>Ứng dụng phải “stateless”\u003C\u002Fstrong>\u003C\u002Fh3>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">Vì Laravel được giữ “sống”, bạn không nên sử dụng các biến toàn cục (\u003Ccode>global\u003C\u002Fcode>, \u003Ccode>static\u003C\u002Fcode>) mà thay vào đó là dùng dịch vụ container.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">2. \u003Cstrong>Không nên cache dữ liệu trong biến cục bộ lâu dài\u003C\u002Fstrong>\u003C\u002Fh3>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">Một biến bị giữ lại qua nhiều request có thể gây rò rỉ dữ liệu người dùng khác.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">3. \u003Cstrong>Không sử dụng file watcher mặc định khi chạy trong production\u003C\u002Fstrong>\u003C\u002Fh3>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">Octane có hỗ trợ \u003Ccode>--watch\u003C\u002Fcode> để reload lại khi thay đổi code, chỉ nên dùng khi dev.\u003C\u002Fp>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">📦 Một Số API Mới Từ Octane\u003C\u002Fh2>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">Thực thi bất đồng bộ:\u003C\u002Fh3>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>\u003Ccode>Octane::concurrently([\n    fn () =&gt; Http::get('\u002Fapi\u002Fnews'),\n    fn () =&gt; Http::get('\u002Fapi\u002Fproducts'),\n]);\n\u003C\u002Fcode>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">Gọi tác vụ async:\u003C\u002Fh3>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>\u003Ccode>Octane::tick('my-job', fn () =&gt; doSomething());\n\u003C\u002Fcode>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">🧳 Khi Nào Nên Dùng Octane?\u003C\u002Fh2>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Khi bạn cần tăng \u003Cstrong>hiệu năng\u003C\u002Fstrong> của ứng dụng mà \u003Cstrong>không cần tái cấu trúc lớn\u003C\u002Fstrong>.\u003C\u002Fli>\n\n\n\n\u003Cli>Khi bạn xử lý \u003Cstrong>nhiều request đồng thời\u003C\u002Fstrong>, như hệ thống API, realtime app, dashboard.\u003C\u002Fli>\n\n\n\n\u003Cli>Khi bạn muốn \u003Cstrong>giảm chi phí hạ tầng\u003C\u002Fstrong>, tận dụng server hiệu quả hơn.\u003C\u002Fli>\n\n\n\n\u003Cli>Tuy nhiên, nếu ứng dụng bạn nhẹ, ít traffic hoặc đơn giản thì \u003Cstrong>Octane không thật sự cần thiết\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity\" \u002F>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">🔚 Kết Luận\u003C\u002Fh2>\n\n\n\n\u003Cp class=\"wp-block-paragraph\">Laravel Octane là một bước tiến mạnh mẽ giúp Laravel chạm gần hơn đến hiệu năng của Node.js, Go và các ngôn ngữ server-side hiệu suất cao khác. Tuy nhiên, việc sử dụng Octane cần hiểu rõ cơ chế hoạt động và đảm bảo rằng ứng dụng của bạn đủ điều kiện để chạy an toàn trên môi trường “long-living”.\u003C\u002Fp>\n\n\n\n\u003Cblockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n\u003Cp class=\"wp-block-paragraph\">Nếu bạn đang chạy hệ thống Laravel ở production với lượng truy cập lớn, hãy thử Octane – bạn sẽ thấy sự khác biệt rõ rệt.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n","804783fa-74fc-40c6-a088-6c3c7e47e17a",{"id":66,"wordpressId":68,"filename":69,"storageKey":70,"sourceUrl":71,"mimeType":72,"altText":20,"caption":39,"width":73,"height":73,"createdAt":74,"updatedAt":43,"url":75},1966,"laravel-octane.png","wordpress\u002F2025\u002F06\u002Flaravel-octane.png","https:\u002F\u002Fvdhoangson.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002Flaravel-octane.png","image\u002Fpng",1024,"2025-06-14T08:26:38.000Z","\u002Fuploads\u002Fwordpress\u002F2025\u002F06\u002Flaravel-octane.png",[77],{"id":47,"wordpressId":48,"name":49,"slug":50,"parentId":51},[79],{"id":54,"wordpressId":55,"name":56,"slug":56},"2025-06-14T08:29:38.000Z","2025-06-23T13:55:12.000Z",2,1,12]