मैंने एक अल्पविकसित परीक्षण "सूट" बनाया।
जब मैं IIS 7.0 पर न्यूनतम Web.config के साथ परीक्षण चलाता हूं (.NET 4.0 पर एकीकृत पाइपलाइन मोड) सब कुछ गुजरता है; परीक्षण फ़ाइल का Cache-Control
प्रतिक्रिया शीर्षलेख private
तब सेट किया जाता है जब वह अनुरोध के Accept
शीर्षलेख फ़ाइल के मिलान से मेल नहीं खाता Content-Type
।
यह मुझे विश्वास दिलाता है कि आपके पास IIS के स्थिर कैचिंग रूटीन या IIS 7.0 और 7.5 के बीच में कुछ अंतर है।
यहां वे फाइलें हैं जिनका मैंने इस्तेमाल किया ( some-script.js
सिर्फ एक खाली फाइल के बाद से):
Web.Config:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0">
</compilation>
</system.web>
<system.webServer>
<staticContent>
<!-- Set expire headers to 30 days for static content-->
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
test.html:
<!doctype html>
<html>
<head>
<title>http://serverfault.com/questions/346975</title>
<style>
body > div
{
border:1px solid;
padding:10px;
margin:10px;
}
</style>
</head>
<body>
<div>
<h2>Request JS file with Accepts: accept/nothing</h2>
<b>Response Headers: </b>
<pre id="responseHeaders-1">loading&hellip</pre>
</div>
<div>
<h2>Request JS file with Accepts: */*</h2>
<b>Response Headers: </b>
<pre id="responseHeaders-2">loading&hellip</pre>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
var responseHeaders1 = $("#responseHeaders-1"),
responseHeaders2 = $("#responseHeaders-2"),
fetchScript = function (accepts, element, successMsg, errorMsg) {
var jXhr = $.ajax({
// fetch the resource "fresh" each time since we are testing the Cache-Control header and not caching itself
"url": "some-script.js?" + (new Date).getTime(),
"headers": {
"Accept" : accepts
},
"complete": function () {
var headers = jXhr.getAllResponseHeaders();
headers = headers.replace(/(Cache-Control:.+)/i, "<strong><u>$1</u></strong>");
element.html(headers);
},
"success": function () {
element.after("<div>" + successMsg + "</div>");
},
"error": function () {
element.after("<div>" + errorMsg + "</div>");
}
});
};
fetchScript("accept/nothing", responseHeaders1, "Uh, your server is sending stuff when the client doesn't accept it.", "Your server (probably) responded correctly.");
fetchScript("*/*", responseHeaders2, "Your server responded correctly.", "Something went wrong.");
</script>
</body>
</html>