Làm cách nào để định cấu hình bộ đệm nội dung tĩnh cho mỗi thư mục và tiện ích mở rộng trong IIS7?


143

Tôi muốn thiết lập các quy tắc trong IIS7 để lưu trữ nội dung tĩnh trong trang web ASP.NET của tôi.

Tôi đã xem các bài viết này, trong đó chi tiết cách thực hiện bằng cách sử dụng <clientCache />phần tử trong web.config:

<clientCache>Bộ đệm của khách hàng (IIS.NET) Thêm hết hạn hoặc Tiêu đề kiểm soát bộ đệm
vào nội dung tĩnh trong IIS (Stack Overflow)

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

Ví dụ: tôi có thể có hai thư mục cần cài đặt bộ đệm riêng:

/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ó thể thực hiện việc này thông qua web.configvì tôi không có quyền truy cập vào bảng điều khiển IIS.

Câu trả lời:


217

Bạn có thể đặt các tiêu đề bộ đệm cụ thể cho toàn bộ thư mục trong thư mục gốc của mình 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 những thứ này trong một web.configtệp 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ề một cơ chế tích hợp để nhắm mục tiêu các loại tệp cụ thể.


1
Tuyệt quá. Bạn có muốn 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ể sai với [bộ tài nguyên IIS7] (: amazon.co.uk/dp/0735624410 ), nó thực sự khá hữu ích. Các Wrox Pro IIS7 cuốn sách không phải là xấu cả. TBH Tôi học được hầu hết từ trang tham chiếu cấu hình IIS.NET : iis.net/ConfigReference và từ việc chọc vào %systemroot%\system32\inetsrv\config\applicationhost.configtệp và bạn bè liên quan.
Kev

7
Có ai biết nếu điều này là đệ quy? ví dụ: Nếu bạn có các thư mục con bên dưới đường dẫn hình ảnh của mình, nó cũng sẽ lưu trữ những thư mục đó chứ?
StuffandBazaki

1
Một điều cần lưu ý là trình duyệt dường như thấy path=""trường hợp nhạy cảm
Chris S

9
@StuffandB nhớ Có, nó là đệ quy. Chỉ cần tự mình thử và IIS đã áp dụng cùng một cài đặt kiểm soát bộ đệm cho tất cả các yêu cầu cho các tệp trong các thư mục con của thư mục mà tôi đã chỉ định là "vị trí".
Erik Öjebo

68

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

<?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ể? .xml hoặc * .xml sẽ hoạt động một mình?
Zulgrib

2
@Zulgrib để áp dụng nó cho một tiện ích mở rộng cụ thể, bạn có thể sử dụng các quy tắc viết lại bên ngoài: stackoverflow.com/questions/32987486/iêu
jotap

@Zulgrib Làm cách nào để sử dụng thẻ vị trí cho nhiều hơn một tệp nhưng không phải tất cả các tệp thuộc loại. Ví dụ vài tập tin jpg trong thư mục gốc nhưng không phải tất cả?
Ra

-2

Tôi cũng gặp vấn đề tương tự. Đối với tôi, vấn đề là làm cách nào để định cấu hình giới hạn bộ nhớ cache cho hình ảnh. Và tôi đã xem qua trang web này cung cấp một số thông tin chi tiết về cách xử lý sự cố. Hy vọng nó cũng hữu ích cho bạn : [ https://varvy.com/pagespeed/cache-control.html]


2
Vui lòng xem xét việc thêm một số thông tin từ liên kết vào câu trả lời của bạn theo stackoverflow.com/help/how-to-answer : Liên kết đến các tài nguyên bên ngoài được khuyến khích, nhưng vui lòng thêm ngữ cảnh xung quanh liên kết để người dùng đồng nghiệp của bạn sẽ biết được đó 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 đích không thể truy cập được hoặc ngoại tuyến vĩnh viễn.
Greg the Incredious 29/11/17
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.