เมื่อใดก็ตามที่ฉันเผยแพร่ไฟล์ CSS หรือจาวาสคริปต์เวอร์ชันใหม่สำหรับเว็บแอปพลิเคชันใดๆ ของเรา ฉันจะเพิ่ม ?v=#
ลงใน URL ในส่วนหัวของ HTML ด้วยตนเอง (# คือหมายเลขเวอร์ชัน เช่น 3 หรือ 10) เพื่อให้แน่ใจว่าผู้ใช้ แคชของเบราว์เซอร์ไม่ได้ขัดขวางการเปลี่ยนแปลง
แต่บางแอปพลิเคชันมีไฟล์ CSS และ JS หลายไฟล์อยู่ในส่วนหัว ดังนั้นจึงเป็นเรื่องน่าเบื่อที่จะติดตามไฟล์ที่เปลี่ยนแปลงทั้งหมด
เราใช้แพลตฟอร์ม ASP.NET บนเซิร์ฟเวอร์ IIS ดังนั้นการใช้คำตอบของ วิธีที่หรูหราในการบังคับให้เบราว์เซอร์โหลดไฟล์ CSS/JS ที่แคชไว้คืออะไร เป็นไปไม่ได้ แต่ฉันกำลังมองหาสิ่งที่คล้ายกัน ควรใช้จาวาสคริปต์ทั้งหมด
ฉันชอบคำแนะนำในโพสต์นั้นให้ใช้แฮช md5 แต่ดูเหมือนจะหาวิธีคำนวณผลรวมของไฟล์ CSS หรือ JS ไม่ได้
รหัสจะมีลักษณะดังนี้ (โดยใช้ jQuery):
$.each($("script[type='text\javascript']"),function(){
$(this).attr("src",$(this).attr("src") + "?v=" + checkMD5Sum($(this).attr("src")) );
});
function checkMD5Sum(url){
//get the hash or something to auto version the file
//I could send the url or filename to a webmethod to get the MD5 check sum, but doing this after page load is not usefull, so what to do?
}
หรือบางทีอาจใช้กระบวนการหลังสร้างใน Visual Studio แต่ฉันไม่เคยทำแบบนั้นมาก่อน ดังนั้นฉันจึงลังเลที่จะลอง
แก้ไข
จะลองทำสิ่งนี้ใน web.config ตาม การเพิ่มโปรไฟล์แคช ก>
<configuration>
<system.webServer>
<caching enabled="true">
<profiles>
<add extension=".js" policy="CacheUntilChange" />
<add extension=".css" policy="CacheUntilChange" />
</profiles>
</caching>
</system.webServer>
</configuration>