Thảo luận và chia sẻ cách tạo Cache, NGINX Caching, Reverse Proxy with Caching

Xin chào anh em!
Lời đầu tiên xin được gửi tới anh em lời chúc sức khỏe và thành công trong cuộc sống!

Hôm nay xin được phép thảo luận và chia sẻ cùng anh em cách tạo cache cho website. Anh em nào biết rồi thì hãy cứ đọc nhé, mình tin nó không thừa đâu hoặc có thể giúp ích thêm cho anh em.

Trước hết, câu hỏi đặt ra là việc tạo cache cho website để làm gì?
Xin được trả lời đơn giản nhất như sau:

Hầu hết các web server có thể xử lý các lượng truy cập bình thường và đa phần các trang web không có quá nhiều truy cập. Vì vậy, có thể bạn tự hỏi: Tại sao bạn nên cache trang web của bạn được hỗ trợ PHP? Các máy chủ web có thể phục vụ nhiều yêu cầu (request), nhiều file cùng một lúc, nhưng tất cả các file này nên là file tĩnh. Một tập lệnh PHP được thực thi bởi máy chủ web và tiếp theo nó sẽ tạo ra dữ liệu HTML được gửi đến người dùng (trình duyệt web). Cho nên khi thực hiện điều này, máy chủ cần sử dụng nhiều bộ nhớ hơn cách gửi một file tới người dùng. Ta cần cache lại thì tốt và nhanh hơn.

Đối với các website sử dụng mã nguồn wordpress bạn có thể sử dụng cách plugin tạo cache như:
– WP Super Cache
– WP rocket

Còn nếu không dùng mã nguồn wordpress thì việc tạo cache cũng tương đối đơn giản phải không nào. (Anh em cần hỏi chỗ này thì để lại bình luận nhé)

Nhưng trong bài này, mình xin chia sẻ một số phương pháp tăng tốc web trên NGINX, mình đã làm với VPS (máy chủ) của mình, để xem tại sao thiên hạ lại gọi nginx là Caching King.

Để giải thích chi tiết thì tương đối dài, và sẽ khá rối rắm.
Mình sẽ giải thích nhanh bằng hình ảnh mô hình đơn giản như sau.

Với 3 mô hình trên, mình đánh số thứ tự khoanh tròn màu đỏ. Chỉ cần cấu hình file nginx của domain là xong thôi, rất đơn giản mà không phải thay đổi gì liên quan đến source code web của bạn.

Sau đây là các bước triển khai:

Mô hình 1:

Cấu hình trên mình dùng cho wordpress luôn, các mã nguồn khác tương tự vậy.
Các hướng dẫn cấu hình nginx với chức năng Web Proxy – FastCGI Cache – Browser Cache – Cách bật nén Gzip trên server sao cho đạt hiệu suất cao nhất.

Giải thích:
Đây là dòng quan trọng khai báo cấu hình FastCGI Cache.
– fastcgi_cache_path /home/domain.com/cache levels=1:2 (thư mục tạo cache của bạn và giá trị này là quy tắc đặt tên và phân cấp thư mục cache)
– keys_zone=domaincache_cache:2000m : đặt tên cho cache zone là domaincache_cache có dung lượng là 2000m, bạn chú ý một chút về đơn vị dung lượng k/K là Kilobytes, m/M là Megabytes
– max_size=1000m inactive=2d; (kích thước tối đa của toàn bộ cache và nếu một response không được sử dụng trong thời gian 2 ngày thì nó sẽ bị xóa khỏi thư mục chứa cache.

Sau khi khởi động lại nginx.
Ta bắt đầu kiểm tra xem đã cache chưa.

curl -I https://domain.com/abc/

Lần đầu tiên truy cập sẽ cho ta thông báo cache là Miss, hãy thử lại lần nữa, nếu báo Hit là thành công.

Như vậy là chúng ta đã tạo cache xong, nhưng chúng ta cần lưu thư mục cache vào Ram thì tốc độ sẽ tốt hơn.
Vì tốc độ đọc trên Ram luôn cao hơn trên ổ cứng.
Trên SSH:
# nano /etc/fstab
tmpfs /home/domain.com/cache tmpfs defaults,size=1000M 0 0
# mount -a
Để kiểm tra lại kết quả bạn gõ lệnh:
df -ah | grep tmpfs
Thấy thư mục /home/domain.com/cache là ok

Mô hình 2:

Việc thực hiện cache ngay trên con reproxy sẽ giảm thiểu kết nối đến vps (máy chủ chính), tốc độ gần như tức thời.
Trên con reproxy sửa cấu hình nginx như sau:

Muốn cache vào ram thì làm tương tự bên trên.

Mô hình 3:

Nó là tổng hợp của hai mô hình 1 và 2, nhưng mình thấy nó không cần thiết.

Như vậy là mình đã trình bày xong phương pháp tăng tốc web trên NGINX. Mình đã cố trình bày rõ, nhưng sẽ khó có thể thoát hết các nội dung.

Hy vọng anh em cùng thảo luận để bài viết của em lên top google search. Hihi.
Cảm ơn anh em đã đọc topic của mình.

ps: Hy vọng bài viết của em vào nhóm bài viết chất lượng. Ai đọc mà ko like, e cắt trym. Hehe

Update: Nên kết hợp đồng thời với việc tạo cache thông thường trên ổ cứng để cho hiệu suất tốt nhất.

Cách sử dụng Inventory Adjustment trong Netsuite để tăng giảm số lượng item

Vào Transactions > Inventory > Adjust Inventory

Tại màn hình Inventory Adjustment, chọn Adjustment Account trong danh sách có sẵn

Hoặc nếu chưa có Adjustment Account, bạn có thể bấm New để tạo mới

Tại tab Adjustments dưới cùng, chọn Item trong danh sách trong select box (chỉ những Item thuộc loại Inventory Item sẽ xuất hiện ở đây)

Kế tiếp chọn Location của Item (được hiểu như là kho hàng của Item đó)

Phần Adjust Qty. By, nhập vào số lượng muốn thay đổi của Item tương ứng, có thể là nhập kho (số dương), hoặc xuất kho (số âm)
Netsuite sẽ hiển thị cho chúng ta số lượng hiện tại của Item đó tại Location đã chọn là bao nhiêu tại phần Qty. On Hand (trong ví dụ này là 136), và số lượng mới sau khi chúng ta thay đổi số lượng tại phần New Quantity (trong ví dụ này là 141)

Sau cùng bấm Save để hoàn tất việc tạo Inventory Adjustment.

Cách import file CSV trong Netsuite sử dụng Import Assistant

Vào Setup > Import/Export > Import CSV Records, màn hình sẽ hiện ra như bên dưới

Tại step 1 (Scan & Upload CSV File), phần Import Type chúng ta sẽ chọn loại dữ liệu trong Netsuite mà chúng ta muốn thêm/cập nhật dữ liệu (ở đây tôi chọn Items). Phần Record Type tôi sẽ chọn Inventory Item. Phần Character Encoding bạn chọn kiểu encoding của file CSV, ở đây tôi chọn Unicode (UTF-8). Phần Csv Column Delimiter, bạn chọn ký tự phân cách giữa các column của file CSV (thông thường là Comma – dấu phẩy). Cuối cùng ở phần CSV file(s), nếu bạn chỉ import 1 file thì chọn One File To Upload, nếu import nhiều file thì chọn Multiple Files To Upload. Sau cùng bạn chọn file CSV cần import và bấm Next để qua step 2.

Tại step 2 (Import Options), phần Data Handling chọn ADD nếu chỉ muốn thêm mới dữ liệu, chọn UPDATE nếu chỉ muốn cập nhật dữ liệu, hoặc chọn ADD OR UPDATE nếu muốn thực hiện cả việc thêm mới và cập nhật dữ liệu. Bạn có thể chọn thêm những option khác trong phần Advanced Options. Bấm Next để qua step 3&4

Tại step 4 (Field Mapping), phần Your Fields sẽ hiển thị tên file CSV của bạn đã upload lên và tên những column trong file CSV đó. Bên phải ngoài cùng là phần Netsuite Fields sẽ hiển thị toàn bộ những field (bao gồm cả những custom fields) của Record Type mà bạn đã chọn ở những step phía trên. Nếu column CSV bạn đặt tên giống với field trong Netsuite thì Netsuite sẽ tự liên kết column CSV với field tương ứng trong Netsuite. Tiếp theo bấm Next qua step 5.

Tại step 5 (Save mapping & Start Import), bạn có thể lưu lại quá trình import CSV file để sử dụng lại sau này. Điền những thông số tương ứng vào Import Map Name, Description và ID. Cuối cùng bạn bấm Save & Run. Nếu thành công màn hình bên dưới sẽ hiện ra.

Để kiểm tra quá trình import CSV file đã hoàn tất chưa bạn có thể bấm vào Import Job Status để kiểm tra. Nếu việc import diễn ra không thành công, bạn có thể bấm vào CSV Response để kiểm tra lỗi.