Gần đây, chúng tôi đã thực hiện cùng một quyết định này. Cuối cùng, chúng tôi đã quyết định sử dụng Gulp, một công cụ dựa trên Javascript mà bạn sử dụng trong quá trình phát triển và đề xuất của tôi là bạn cũng làm như vậy. Gulp có một cộng đồng người dùng và rất nhiều plugin. Nó có thể xem các tập tin cho những thay đổi khi bạn phát triển và tự động nối lại, rút gọn (và khoảng 1000 thứ khác - xem http://gulpjs.com/plugins/).
Sử dụng plugin Gulp có tên gulp-rev, các tệp được tự động đổi tên, như tệp-k34jzkl3.css, để ẩn bộ nhớ cache của trình duyệt khi thay đổi được thực hiện. Sử dụng một plugin gulp khác, gulp-manifest, chúng tôi tự động tạo một tệp JSON ánh xạ tệp CSS gốc tới tên bộ nhớ cache (ví dụ: "file.css": "file-k34jzkl3.css") và sau đó chúng tôi có một CFC đơn giản dịch những tên đó vào đúng vị trí trong HTML của chúng tôi. Đây là những gì tệp JSON manifest của chúng tôi trông giống như:
{
"baseline.css": "/global/baseline-82bcd2ab92.css",
"user.css": "/global/user-0d1d32170c.css"
}
Và sau đó đánh dấu CFML của chúng tôi trông như thế này:
<link rel="stylesheet" href="#application.asset.getAsset("baseline.css")#">
nào tạo ra HTML như:
<link rel="stylesheet" href="/global/baseline-82bcd2ab92.css">
Tôi tạo ra một repo với mã số tại https://github.com/ghidinelli/assets.cfc
Nguồn
2015-10-06 01:37:46
Bạn đã xem CFStatic (https://github.com/DominicWatson/cfstatic) chưa? Có tất cả những điều đó và hơn thế nữa. –
CFStatic là tốt đẹp, nhưng tôi không bao giờ có được sự ấm áp và mờ nhạt từ việc sử dụng nó - dường như việc rút gọn các tệp JS & CSS không phải là điều mà CF nên làm. Tôi đã sử dụng nút với grunt để rút gọn khi các tệp được cập nhật. Tôi có mã tải các tập tin 'thô' khi tôi vượt qua một param URL để giúp tôi gỡ lỗi khi cần thiết. –
Máy chủ web nào bạn đang sử dụng? Tôi sử dụng IIS và đang sử dụng IISpeed (PageSpeed for IIS) để tự động concat + rút gọn các tệp JS/CSS mà không phải sửa đổi bất kỳ mã nào trên bất kỳ dự án nào. Các tối ưu hóa được thực hiện bởi máy chủ web sau khi ColdFusion được thực hiện tạo nội dung HTML. (LƯU Ý: Tính năng này cực kỳ hữu ích cho việc phân phối trực tiếp/thời gian thực/được lưu trong bộ nhớ cache nhưng không được khuyến nghị để "phân phối" để phân phối lại.) –