2.5.1 Bộ nhớ đệm cho các mẫu (template)
Theo mặc định, các mẫu chỉ được phân tích cú pháp một lần—khi chúng được sử dụng lần đầu tiên—và kết quả của quá trình phân tích đó sẽ được lưu vào bộ nhớ đệm cho các lần sử dụng sau. Đây là một tính năng tuyệt vời cho môi trường sản xuất, vì nó ngăn việc phân tích lại mẫu cho mỗi yêu cầu và do đó cải thiện hiệu suất.
Tuy nhiên, tính năng này lại không tuyệt vời lắm khi phát triển. Giả sử bạn khởi chạy ứng dụng, truy cập trang thiết kế taco, và quyết định thực hiện một vài thay đổi. Khi bạn làm mới trình duyệt web, bạn vẫn sẽ thấy phiên bản ban đầu. Cách duy nhất để xem các thay đổi là khởi động lại ứng dụng, điều này khá bất tiện.
May mắn thay, chúng ta có cách để tắt bộ nhớ đệm. Tất cả những gì bạn cần làm là đặt thuộc tính bộ nhớ đệm thích hợp của template về false. Bảng 2.3 liệt kê các thuộc tính bộ nhớ đệm tương ứng với từng thư viện template được hỗ trợ.
Bảng 2.3 Các thuộc tính để bật/tắt bộ nhớ đệm template
| Template | Cache-enable property |
|---|---|
| Freemarker | spring.freemarker.cache |
| Groovy Templates | spring.groovy.template.cache |
| Mustache | spring.mustache.cache |
| Thymeleaf | spring.thymeleaf.cache |
Theo mặc định, tất cả các thuộc tính này được đặt là true để bật bộ nhớ đệm. Bạn có thể tắt bộ nhớ đệm cho engine template mà bạn chọn bằng cách đặt thuộc tính bộ nhớ đệm của nó thành false. Ví dụ, để tắt bộ nhớ đệm của Thymeleaf, thêm dòng sau vào file application.properties:
spring.thymeleaf.cache = falseLưu ý là bạn nên chắc chắn xóa dòng này (hoặc đặt lại thành true) trước khi triển khai ứng dụng ra môi trường production. Một lựa chọn là thiết lập thuộc tính này trong một profile. (Chúng ta sẽ nói về profile trong chương 6.)
Một lựa chọn đơn giản hơn nhiều là sử dụng Spring Boot’s DevTools, như chúng ta đã làm ở chương 1. Trong số nhiều tính năng hữu ích cho giai đoạn phát triển mà DevTools cung cấp, nó sẽ tự động tắt bộ nhớ đệm cho tất cả các thư viện template, nhưng sẽ tự vô hiệu hóa (và do đó bật lại bộ nhớ đệm template) khi ứng dụng của bạn được triển khai.
