2010-02-03 22 views
132

Tôi muốn thiết lập các quy tắc trong IIS7 cho bộ nhớ đệm nội dung tĩnh trong trang web ASP.NET của tôi.Làm thế nào để cấu hình bộ nhớ cache nội dung tĩnh cho mỗi thư mục và phần mở rộng trong IIS7?

Tôi đã thấy những bài viết này, trong đó chi tiết làm thế nào để làm điều đó bằng cách sử dụng các yếu tố <clientCache /> trong web.config:

Client Cache <clientCache> (IIS.NET)
Add Expires or Cache Control Header to static content in IIS (Stack Overflow)

Tuy nhiên, khung cảnh này dường như áp dụng trên toàn cầu cho tất cả các tĩnh Nội dung. Có cách nào để làm điều này chỉ cho một số thư mục hoặc phần mở rộng?

Ví dụ, tôi có thể có hai thư mục cần thiết lập bộ nhớ cache riêng biệt:

/static/images
/content/pdfs

Có thể thiết lập các quy tắc cho việc gửi tiêu đề bộ nhớ cache (max-age, expires, vv) dựa trên các phần mở rộng và đường dẫn thư mục?

Xin lưu ý, tôi phải có khả năng thực hiện việc này qua web.config vì tôi không có quyền truy cập vào bàn điều khiển IIS.

Trả lời

201

Bạn có thể thiết lập bộ nhớ cache tiêu đề cụ thể cho toàn bộ một thư mục trong một trong hai gốc của bạn web.config:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <!-- Note the use of the 'location' tag to specify which 
     folder this applies to--> 
    <location path="images"> 
    <system.webServer> 
     <staticContent> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" /> 
     </staticContent> 
    </system.webServer> 
    </location> 
</configuration> 

Hoặc bạn có thể chỉ định này trong một tập tin web.config trong thư mục nội dung:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <staticContent> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" /> 
    </staticContent> 
    </system.webServer> 
</configuration> 

Tôi không biết về cơ chế tích hợp để nhắm mục tiêu các loại tệp cụ thể.

+1

Tuyệt vời. Bạn có giới thiệu cho tôi một cuốn sách về IIS 7 không? Tôi muốn tìm hiểu về những điều này. Cảm ơn. – vtortola

+5

@vtortola - bạn không thể đi sai với [bộ tài nguyên IIS7] (: http://www.amazon.co.uk/dp/0735624410), nó thực sự khá hữu ích. Cuốn sách [Wrox Pro IIS7] (http://www.amazon.co.uk/dp/0470152532) cũng không tệ. TBH Tôi đã học được chủ yếu từ trang tham khảo cấu hình IIS.NET: http://www.iis.net/ConfigReference và từ poking về tập tin '% systemroot% \ system32 \ inetsrv \ config \ applicationhost.config' và những người bạn có liên quan. – Kev

+6

Có ai biết nếu điều này là đệ quy không? ví dụ. Nếu bạn có các thư mục con dưới đường dẫn hình ảnh của bạn, nó cũng sẽ lưu vào bộ nhớ cache? – StuffandBlah

61

Bạn có thể làm điều đó trên cơ sở từng tệp. Sử dụng đường dẫn thuộc tính bao gồm tên tập tin

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <location path="YourFileNameHere.xml"> 
     <system.webServer> 
      <staticContent> 
       <clientCache cacheControlMode="DisableCache" /> 
      </staticContent> 
     </system.webServer> 
    </location> 
</configuration> 
+1

Và nếu bạn muốn áp dụng nó cho tất cả các tệp của một phần mở rộng cụ thể? chỉ một lần .xml hoặc * .xml có hoạt động không? – Zulgrib

+1

@Zulgrib để áp dụng cho tiện ích mở rộng cụ thể, bạn có thể sử dụng quy tắc ghi lại gửi đi: http://stackoverflow.com/questions/32987486/iis-setting-cache-control-header-per-file-type/33444897#33444897 – jotap

-1

tôi đã cùng issue.For tôi vấn đề là làm thế nào để cấu hình một giới hạn bộ nhớ cache để images.And tôi đã xem qua trang web này mà đưa ra một số hiểu biết sâu sắc đến các thủ tục về cách vấn đề có thể được xử lý.Hy vọng nó cũng sẽ hữu ích cho bạn quá Liên kết: [https://varvy.com/pagespeed/cache-control.html]

+1

Vui lòng hãy xem xét thêm một số thông tin từ liên kết đến câu trả lời của bạn theo https://stackoverflow.com/help/how-to-answer: Các liên kết đến tài nguyên bên ngoài được khuyến khích, nhưng hãy thêm ngữ cảnh xung quanh liên kết để người dùng của bạn sẽ có một số ý tưởng nó là gì và tại sao nó ở đó. Luôn trích dẫn phần có liên quan nhất của một liên kết quan trọng, trong trường hợp trang web mục tiêu không thể truy cập được hoặc sẽ vĩnh viễn ngoại tuyến. –

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