อีกวิธีหนึ่งที่คล้ายกันคือการใช้htaccess mod_rewriteเพื่อละเว้นบางส่วนของเส้นทางเมื่อให้บริการไฟล์ หน้าดัชนีที่ไม่เคยแคชของคุณอ้างอิงเส้นทางล่าสุดไปยังไฟล์
จากมุมมองของการพัฒนามันง่ายพอ ๆ กับการใช้ params สำหรับหมายเลขเวอร์ชัน แต่ก็แข็งแกร่งพอ ๆ กับวิธีการตั้งชื่อไฟล์
ใช้ส่วนที่ละเว้นของพา ธ สำหรับหมายเลขเวอร์ชันและเซิร์ฟเวอร์จะละเว้นมันและให้บริการไฟล์ที่ไม่ได้แคช
1.2.3/css/styles.css
ทำหน้าที่ไฟล์เดียวกันcss/styles.css
เนื่องจากไดเร็กทอรีแรกถูกตัดและละเว้นโดยไฟล์ htaccess
รวมถึงไฟล์เวอร์ชัน
<?php
$version = "1.2.3";
?>
<html>
<head>
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
<link rel="stylesheet" type="text/css" href="<?php echo $version ?>/css/styles.css">
</head>
<body>
<script src="<?php echo $version ?>/js/main.js"></script>
</body>
</html>
โปรดทราบว่าวิธีนี้หมายความว่าคุณต้องปิดการใช้งานการแคชของหน้าดัชนี - การใช้แท็ก <meta> เพื่อปิดการแคชในเบราว์เซอร์ทั้งหมดหรือไม่?
ไฟล์. htaccess
RewriteEngine On
# if you're requesting a file that exists, do nothing
RewriteCond %{REQUEST_FILENAME} !-f
# likewise if a directory that exists, do nothing
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise, rewrite foo/bar/baz to bar/baz - ignore the first directory
RewriteRule ^[^/]+/(.+)$ $1 [L]
คุณสามารถใช้แนวทางเดียวกันนี้บนแพลตฟอร์มเซิร์ฟเวอร์ใดก็ได้ที่อนุญาตให้เขียน URL ใหม่ได้
(เงื่อนไขการเขียนใหม่ที่ดัดแปลงมาจากmod_rewrite - เขียนไดเร็กทอรีใหม่เป็นสตริงการสืบค้นยกเว้น / #! / )
... และหากคุณต้องการการป้องกันแคชสำหรับหน้าดัชนี / จุดเข้าไซต์ของคุณคุณสามารถใช้ JavaSriptเพื่อรีเฟรชได้ตลอดเวลา