2011-08-15 37 views
15

Tôi có một tập tin mà tôi liên kết đến từ trang web của tôi như
Liên kết HTML bỏ qua bộ nhớ cache?

<a href="http://example.com/myfile.txt>View!</a> 

Tuy nhiên, tập tin này thay đổi rất thường xuyên và khi liên kết được nhấp, trình duyệt sẽ tải phiên bản cache của tập tin, không phải là tập tin thực tế . Có cách nào để nhấp vào liên kết đó sẽ bỏ qua bộ nhớ cache cho trang đó không?

Điều gì đó tuyệt vời như <a bypassCache href=""> sẽ là suy nghĩ mơ ước.

Trả lời

19

Điều gì đó tuyệt vời như mơ tưởng.

Thật vậy, có điều bạn có thể làm từ trong liên kết: Thêm thông số GET ngẫu nhiên.

<a href="http://example.com/myfile.txt?a=193834923283943842923">View!</a> 

Bạn có thể sử dụng JavaScript (hoặc tất nhiên là ngôn ngữ kịch bản lệnh phía máy chủ như PHP) để làm điều này trên cơ sở động.

Tuy nhiên, cách vượt trội nhất sẽ là định cấu hình tiêu đề bộ nhớ đệm của tệp văn bản chính xác ở vị trí đầu tiên ở phía máy chủ. Ăn cắp các thông tin tiêu đề từ Best way to disable client caching, một file .htaccess như thế này nên làm việc:

<Files myfile.txt> 
FileETag None 
<IfModule mod_headers.c> 
Header unset ETag 
Header set Cache-Control "store, no-cache, must-revalidate, post-check=0, pre-check=0" 
Header set Pragma "no-cache" 
Header set Expires "Sun, 19 Nov 1978 05:00:00 GMT" 
</IfModule> 
</FilesMatch> 
+0

Không! Không bao giờ thêm tham số ngẫu nhiên để tránh bộ nhớ đệm. Nếu bạn đang sử dụng bộ nhớ cache proxy như Varnish thì bạn đang làm đầy bộ nhớ cache với các mục vô dụng mà sẽ không bao giờ được sử dụng. Bạn nên sử dụng các tham số header của Cache-Control và Pragma. – mickiewicz

0

Thêm một số ngẫu nhiên sau khi liên kết hyper, chẳng hạn như <a href="http://example.com/myfile.txt?rand=12312321321">View!</a>

Tạo một số ngẫu nhiên mới mỗi lần tải trang.

+0

nhưng tôi không phải là một mà sẽ luôn cập nhật tệp. Điều đó có nghĩa là tôi sẽ phải cấp quyền truy cập cho tất cả những người chỉnh sửa tệp và hướng dẫn họ tạo số ngẫu nhiên – dukevin

1

Cách tốt nhất là nói với apache/(web server) để cho trình duyệt không cho phép bộ nhớ đệm của file đó, nếu bạn không có quyền kiểm soát trên máy chủ đó, bạn có thể tránh cache bằng cách thay đổi các tham số gửi cho nó, chỉ cần thêm một số số đằng sau?, để tạo thời gian khi bạn tạo liên kết, điều này làm cho mỗi url khác nhau, vì vậy trình duyệt sẽ bỏ qua bộ nhớ cache, nhưng tất cả các liên kết đến cùng một tệp, miễn là máy chủ bỏ qua tham số bổ sung. trong php:

echo "<a href='http://example.com/myfile.txt?" . time() . "'>View!</a>" 
+0

may mắn tôi đã sử dụng php để thời gian của bạn() hoạt động rất tốt – dukevin

0

Bạn có thể giải quyết sự cố ở cấp máy chủ. Đặt ngày hết hạn đặc biệt cho tài nguyên txt (hoặc tài nguyên cụ thể) phù hợp với yêu cầu của bạn. Nếu bạn sử dụng apache bạn có thể đọc về mod_expiry cho apache đây

1

Chỉ cần đặt

<meta http-equiv="expires" content="0"> 

Into the phần đầu của trang mục tiêu của bạn và kiểm tra lại

Các vấn đề liên quan