ฉันจะปิดใช้งานการแคช Tomcat ได้อย่างไร ฉันพบปัญหาไฟล์คงที่แปลก ๆ


26

ฉันจะป้องกัน Tomcat ไม่ให้แคชได้อย่างไร ฉันมีไฟล์ css และ html พื้นฐานที่ฉันโหลดและใช้ผ่าน ajax และหากฉันรีสตาร์ท Tomcat การเปลี่ยนแปลงจะไม่สะท้อน เครื่องที่แตกต่างกันเบราว์เซอร์ที่แตกต่างกันและฉันไม่ได้รับไฟล์ที่อัปเดต

คิด?

คำตอบ:


21

คุณอาจต้องลบโฟลเดอร์แคชแอปพลิเคชันใน / work / Catalina / localhost หลังจากเปลี่ยนการตั้งค่าสถานะ cachingAllowed

การกำหนดค่าสามารถนำมาใช้ใน server.xml เป็น

<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 ฉันลืมที่จะพูดถึงในคำตอบเดิมของฉัน ขอบคุณ!
KPWINC

2
ฮ่า ๆ ... ความรักอยู่ที่ไหน
KPWINC

4
ฉันจะเปลี่ยนchachingAllowedแท็กที่ไหน
kajacx

1
มีคำเตือนจาก Tomcat 8 เมื่อเริ่มต้น: การตั้งค่าคุณสมบัติcachingAllowedเป็นfalseไม่พบคุณสมบัติที่ตรงกัน
naXa

4
คำตอบนี้
เก่าเกินไป

14

สำหรับคุณสมบัติ Tomcat 8 / Tomcat 9 ควรเพิ่มใน conf / context.xml ดังนี้

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

คุณอาจต้องลบโฟลเดอร์แคชแอปพลิเคชันใน / work / Catalina / localhost หลังจากเปลี่ยนการcachingAllowedตั้งค่าสถานะ ล้างแคชของ IntelliJ IDEA ด้วย (หากคุณใช้เพื่อเรียกใช้ Tomcat):

Mac: / Users / {: user} / Library / Caches / IntelliJIdea {: version} / tomcat /  
Linux: /home/{:user}/.IntelliJIdea{:version}/system/tomcat/
Windows: C: \ Users \ {: user} \. IntelliJIdea {: version} \ system \ tomcat \

ดูการอ้างอิงการกำหนดค่า Apache Tomcat 9สำหรับพารามิเตอร์อื่น ๆ


2
antiResourceLocking บน <Resources> - แท็กผิดปกติสำหรับ Tomcat 8
pscheit

สิ่งนี้ไม่ถูกต้องสำหรับ Tomcat 7 เช่นกัน "การตั้งค่าคุณสมบัติ 'antiResourceLocking' เป็น 'false' ไม่พบคุณสมบัติที่ตรงกัน" ... "การตั้งค่าคุณสมบัติ 'cachingAllowed' เป็น 'false' ไม่พบคุณสมบัติที่ตรงกัน"
Amalgovinus

@Amalgovinus สำหรับ Tomcat 7 ดูคำตอบของ Zalumon
naXa

@Amalgovinus คุณแก้ไขปัญหาของคุณแล้วหรือยัง? ฉันมีปัญหาเดียวกันใน tomcat7 คุณทำอะไรไป
แอรอน

ฉันไม่เคยได้รับคุณสมบัติในการทำงาน .. แต่ฉันค่อนข้างมั่นใจว่าแคชของฉันเป็นปัญหาการปรับใช้ที่ไม่เกี่ยวข้อง :( ข้อผิดพลาดของผู้ใช้
Amalgovinus

13

ฉันมีปัญหานี้ใน Tomcat 7 และเหตุผลก็คือฉันได้ตั้งค่า antiResourceLocking เป็นจริง (ฟังดูเหมือนเป็นความคิดที่ดี ... )

ตามเอกสาร ( http://tomcat.apache.org/tomcat-7.0-doc/config/context.html ):

โปรดทราบว่าการตั้งค่านี้เป็นจริงมีผลข้างเคียงบางอย่างรวมถึงการปิดใช้งานการโหลด JSP ในเซิร์ฟเวอร์ที่ทำงานอยู่: ดู Bugzilla 37668

ในกรณีของฉันมันทำให้ไฟล์ข้อความแบบคงที่ธรรมดาจะถูกแคช

ดังนั้นโดยสรุปอย่างน้อยสำหรับการพัฒนาอย่างรวดเร็วฉันต้องใช้:

antiResourceLocking="false"
cachingAllowed="false"

ฉันจะเพิ่มสิ่งนี้อย่างแน่นอนที่ไหน ถ้าฉันใส่ใน conf / context.xml มันทำให้ฉัน "ไม่พบคุณสมบัติที่ตรงกัน" สำหรับพวกเขาแต่ละคน ...
Aaron

1
เป็นคุณลักษณะขององค์ประกอบบริบท
Reto Höhener

4

คุณได้ตรวจสอบเอกสารนี้แล้ว: Apache Tomcat Configuration Reference ?

cacheMaxSize- ขนาดสูงสุดของแคชทรัพยากรสแตติกในหน่วยกิโลไบต์ หากไม่ได้ระบุไว้ค่าเริ่มต้นคือ 10240 (10 เมกะไบต์)

cacheTTL- ระยะเวลาเป็นมิลลิวินาทีระหว่างการตรวจสอบแคชรายการใหม่ หากไม่ได้ระบุไว้ค่าเริ่มต้นคือ 5000 (5 วินาที)

cachingAllowed- หากค่าของการตั้งค่าสถานะนี้เป็นจริงแคชสำหรับทรัพยากรแบบคงที่จะถูกนำมาใช้ หากไม่ได้ระบุไว้ค่าดีฟอลต์ของแฟล็กจะเป็นจริง

พารามิเตอร์เหล่านี้เหมือนกันสำหรับ Tomcat 5.5 และ Tomcat 6.0


ฉันตั้งค่าแคชให้เป็นเท็จและ cacheTTL เป็น 1,000 ใน appcontext.xml ของฉันและฉันยังไม่สามารถรับไฟล์ไม่ใช่แคชได้ ที่แย่ไปกว่านั้นคือแคชในการรีสตาร์ท Tomcat
Stefan Kendall

จากนั้นก็จะต้องเป็นจากแคชเบราว์เซอร์
Lisak
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.