Làm cách nào để tắt bộ nhớ đệm tomcat? Tôi có vấn đề tập tin tĩnh kỳ lạ


26

Làm cách nào để ngăn chặn tomcat khỏi bộ nhớ đệm? Tôi có các tệp css và html cơ bản mà tôi tải và sử dụng qua ajax và trừ khi tôi khởi động lại tomcat, các thay đổi dường như không phản ánh. Các máy khác nhau, các trình duyệt khác nhau và tôi không nhận được các tệp cập nhật.

Suy nghĩ?

Câu trả lời:


21

Bạn có thể phải xóa thư mục bộ đệm của ứng dụng trong / work / Catalina / localhost sau khi thay đổi cờ cache.

Cấu hình có thể được giới thiệu trong server.xml như

<Context className="org.apache.catalina.core.StandardContext"
                 cachingAllowed="false"
                 charsetMapperClass="org.apache.catalina.util.CharsetMapper"
                 cookies="true" 
                 reloadable="false" 
                 wrapperClass="org.apache.catalina.core.StandardWrapper">
        </Context>

2
+1 Tôi hoàn toàn quên đề cập đến điều đó trong câu trả lời ban đầu của mình. Cảm ơn!
KPWINC

2
LOL ... tình yêu ở đâu?
KPWINC

4
Tôi thay đổi chachingAllowedthẻ ở đâu?
kajacx

1
Nhận được cảnh báo từ Tomcat 8 khi bắt đầu: Đặt thuộc tính cachingAllowedthành falsekhông tìm thấy thuộc tính phù hợp.
naXa

4
Câu trả lời này hiện đã quá lỗi thời, đối với bất kỳ ai đang đọc và không còn thực sự chính xác (đối với Tomcat 5+)
Amalgovinus

14

Đối với các thuộc tính Tomcat 8 / Tomcat 9 nên được thêm vào trong conf / bối cảnh như sau

<Context>
  <Resources antiResourceLocking="false" cachingAllowed="false" />
  ...
</Context>

Bạn có thể phải xóa thư mục bộ đệm của ứng dụng trong / work / Catalina / localhost sau khi thay đổi cachingAllowedcờ. Đồng thời xóa bộ nhớ cache của IntelliJ IDEA (nếu bạn sử dụng nó để chạy Tomcat):

Mac: / Users / {: user} / Library / Caches / IntelliJIdea {: version} / tomcat /  
Linux: / home / nb: userpl / .IntelliJIdea đũa: version Bolog / system / Tomcat /
Windows: C: \ Users \ {: user} \. IntelliJIdea {: phiên bản} \ system \ tomcat \

Xem Tài liệu tham khảo cấu hình Apache Tomcat 9 để biết các tham số khác.


2
AntiResourceLocking trên <Tài nguyên> -Tag hoàn toàn sai đối với tomcat 8
pscheit

Điều này cũng không đúng với tomcat 7. "Đặt thuộc tính 'antiResourceLocking' thành 'false' không tìm thấy thuộc tính khớp." ... "Đặt thuộc tính 'cacheing ALLowed' thành 'false' không tìm thấy thuộc tính khớp."
Amalgovinus

@Amalgovinus cho Tomcat 7 xem câu trả lời của Zalumon .
naXa

@Amalgovinus bạn đã giải quyết vấn đề của bạn? Tôi có cùng một vấn đề trong tomcat7, bạn đã làm gì?
Aaron

Tôi chưa bao giờ có tài sản để làm việc .. nhưng tôi khá chắc chắn rằng bộ nhớ cache của tôi là một vấn đề triển khai không liên quan :( lỗi người dùng
Amalgovinus

13

Tôi đã gặp vấn đề này trong Tomcat 7 và lý do là tôi đã đặt antiResourceLocking thành đúng (nghe có vẻ là một ý tưởng hay ...).

Theo các tài liệu ( http://tomcat.apache.org/tomcat-7.0-doc/config/context.html ):

Xin lưu ý rằng việc cài đặt này thành true có một số tác dụng phụ, bao gồm cả việc vô hiệu hóa tải lại JSP trong máy chủ đang chạy: xem Bugzilla 37668.

Trong trường hợp của tôi, nó thậm chí còn khiến các tệp văn bản tĩnh đơn giản được lưu trữ.

Vì vậy, tóm lại, ít nhất là để phát triển nhanh, tôi phải sử dụng:

antiResourceLocking="false"
cachingAllowed="false"

Tôi thêm chính xác vào đâu? Nếu tôi đặt conf / bối cảnh, nó sẽ cho tôi "không tìm thấy thuộc tính phù hợp" cho mỗi người trong số họ ...
Aaron

1
Là thuộc tính của yếu tố bối cảnh.
Reto Höhener

4

Bạn đã kiểm tra tài liệu này: Tham khảo cấu hình Apache Tomcat chưa?

cacheMaxSize- Kích thước tối đa của bộ đệm tài nguyên tĩnh tính bằng kilobyte. Nếu không được chỉ định, giá trị mặc định là 10240 (10 megabyte).

cacheTTL- Lượng thời gian tính bằng mili giây giữa các lần xác nhận lại bộ nhớ cache. Nếu không được chỉ định, giá trị mặc định là 5000 (5 giây).

cachingAllowed- Nếu giá trị của cờ này là đúng, bộ đệm cho tài nguyên tĩnh sẽ được sử dụng. Nếu không được chỉ định, giá trị mặc định của cờ là đúng.

Các tham số này giống nhau cho Tomcat 5.5 và Tomcat 6.0.


Tôi đã đặt bộ đệm cho phép thành false và cacheTTL thành 1000 trong appcontext.xml của tôi và tôi VẪN không thể lấy tệp không vào bộ đệm. Tệ hơn nữa, đó là bộ nhớ đệm trên tomcat khởi động lại.
Stefan Kendall

Sau đó, nó phải từ bộ nhớ cache của trình duyệt
lisak
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.