Giới thiệu Thumb-me - Giải pháp thumb ảnh bị động

Giới thiệu Thumb-me - Giải pháp thumb ảnh bị động

Mình luôn tìm kiếm một giải pháp tạo ảnh thumb bị động tốt, nhanh, và dễ dàng scale ngang trên các hệ thống, nhưng có vẻ đa số các giải pháp đều không được open source. Khi mà không có thì đành phải xắn tay vào mà làm thôi.

##Nhu cầu

  1. Gen ảnh thumb bị động, tức là khi nào có request từ client thì mới tiến hành gen ảnh thumb.
  2. Cache lại ảnh thumb để sử dụng lại.
  3. Cho phép lấy file từ các hệ thống khác nhau: local file system, network file system, distributed file system (như là GridFS, MogileFS, HDFS, GlusterFS, v.v.) thông qua các file handler.
  4. Dễ dàng thêm mới các phương thức thumb ảnh.
  5. Bảo vệ hệ thống bằng cách tạo ra token tránh bị gen ảnh hàng loạt.

##Giải pháp

Mình cũng có đưa ra khá nhiều giải pháp khác nhau, ban đầu được viết bằng PHP, sau đó là LUA. Trong thời gian này, mình cũng thử NodeJS, nhưng hơi bí bách một số chỗ, như là cache ảnh. Sau đó cũng sử dụng GoLANG, nhưng sự phức tạp của GoLANG cộng với thiếu lib để phát triển tạo ra một hàng rào lớn.

May mắn là trong thời gian gần đây, mình làm việc khá nhiều với nginx reverse proxy, và cũng thực sự là may mắn khi nhớ đến là nginx có một cơ chế cache response từ proxy rất hay. Vậy là ra đời thumb-me.

Về mặt kỹ thuật, thumb-me bao gồm 2 lớp: reverse proxy và app.

####Lớp app

Bao gồm các thành phần sau:

  1. Server (server.js): xử lý các request đến. Nếu file tồn tại thì trả lại trực tiếp vào response, nếu không có thì chuyển request đó đến một method, method này sẽ trả lại response.
  2. Handler (trong thư mục handlers): sử dụng để lấy các file lưu trữ. Với nhu cầu trong tương lai, mình sẽ viết thêm các handler để có thấy lấy (và lưu?, hiện tại chỉ có chức năng lấy, vì ảnh thumb tạo ra sẽ cache ở nginx) từ các file system khác nhau.
  3. Method (trong thư mục methods): sử dụng để xử lý ảnh. Ví dụ như: thumb, zoom, rotate, crop, watermark, v.v. Được thiết kế để có thể thêm vào một cách dễ dàng.

####Lớp reverse proxy

Nginx là ứng cử viên tuyệt với vì các tính chất sau:

  1. Dễ config và nhiều document.
  2. Stable.
  3. Có khả năng cache response khi chạy ở reverse proxy.

##Download

Tất cả source code và hướng dẫn config mình đều có chia sẻ tại github: thumb-me. Tất cả các đóng góp để phát triển dự án rất được hoan nghênh, vì hiện tại mình sẽ không có nhiều thời gian để phát triển dự án. Khi nào nhu cầu mình thay đổi thì mình mới viết tiếp các handler, method mới.

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Tìm kiếm bất động sản

 

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Tiếp thị liên kết - Affiliate Marketing là gì?

Tiếp thị liên kết - Affiliate Marketing là gì?

Với kinh nghiệm của cá nhân, cũng như tham khảo một số người làm Affiliate khá nổi tiếng, Thủ Thuật Marketing giới thiệu với các bạn cơ bản về trường phái Marketing này.

50 phím tắt hữu ích cho người dùng Windows và MAC

50 phím tắt hữu ích cho người dùng Windows và MAC

Nếu bạn chưa có thói quen sử dụng phím tắt, hãy cố gắng rèn luyện và ghi nhớ chúng nha.

Cài đặt Dropbox trên "ngọn lửa" Kindle Fire của Amazon

Cài đặt Dropbox trên "ngọn lửa" Kindle Fire của Amazon

Bạn đang có ý muốn truy cập tất cả các tập tin trên "ngọn lửa" Kindle Fire của Amazon từ tài khoản Dropbox.

Công ty diệt chuột T&C

 

Diet con trung