asp.net中Server.Transfer重定向到图片导致缓存机制失效解决方法

例如,直接请求图片时服务器响应的HTTP头如下:

引用内容
HTTP/1.1 200 OK
Content-Length: 48150
Content-Type: image/jpeg
Last-Modified: Tue, 18 Dec 2012 15:01:50 GMT
Accept-Ranges: bytes
ETag: "e119ee9b30ddcd1:1c48"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Sat, 06 Sep 2014 08:07:17 GMT

使用Server.Transfer重定向到图片:

<% Server.Transfer("/test.jpg") %>

服务器响应的HTTP头如下:

引用内容
HTTP/1.1 200 OK
Date: Sat, 06 Sep 2014 08:08:23 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 48150
Content-Type: text/html
Set-Cookie: ASPSESSIONIDCABATASQ=HCKPNPPAECAKPBJJNHOENINF; path=/
Cache-control: private

存在问题

·不能正确返回Content-Type的值image/jpeg;
·HTTP头缺少了Last-Modified和ETag,致使缓存机制失效;

这是Server.Transfer设计使然,应当无解。ASP.NET可以使用RewritePath代替它实现服务器端重定向。

时间: 2024-09-26 11:18:43

asp.net中Server.Transfer重定向到图片导致缓存机制失效解决方法的相关文章

chrome,IE8,ie9中同步(sync)方式的ajax导致dom更新滞后解决方法

当使用sync方式的ajax加载时会导致dom操作被挂起,有此问题的浏览器有chrome,IE8,9等(未详测), 举例:  代码如下 复制代码 dialog = new Dialog({}).open(); // sync方式的ajax $.ajax({    url: "some/url",     async: false, // load data with sync call     // other params }); 以上代码中,dialog是个对话框对象,正常情况下应

Asp.net中的GridView导出遇到的两个问题和解决方法_实用技巧

对于GridView导出的内容的代码大致如下: Response.Clear(); Response.Buffer = true; Response.Charset = "GB2312"; Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); Response.ContentEncoding = Sys

ASP.Net中无法用JS实现图片随屏幕移动的解决办法

asp.net|js|解决 在纯HTML文件中用javascript可以正常实现图片随屏幕移动,但是同一段javascript代码在asp.net页面中就没有半点反应,图片无法随屏幕移动.主要原因:在asp.net页面中,使用如下标准:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

ASP.Net中无法用javascript实现图片随屏幕移动的解决办法

在纯HTML文件中用javascript可以正常实现图片随屏幕移动,但是同一段javascript代码在asp.net页面中就没有半点反应,图片无法随屏幕移动. 主要原因: 在asp.net页面中,使用如下标准: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Asp.net中使用文本框的值动态生成控件的方法_实用技巧

看到一个网友,有论坛上问及,动态的生成checkbox控件,在文本框中输入一个"花"字,点一下"生成"按钮,就会在下面生成一个checkbox,它的text属性是"花".再输入一个"鸟",点一下按钮,就会生成第二个checkbox控件,text属性是"鸟"... Insus.NET的解决方法很简单,就是每次在文本框输入的值都存起来,然后把这些数据绑定至一个CheckBoxList控件上就行了. 详细,先创建

asp.net中button控制先执行js再执行后台程序的方法_实用技巧

本文实例讲述了asp.net中button控制先执行js再执行后台程序的方法.分享给大家供大家参考.具体分析如下: 在.net中要实现button控制点击之后先执行js再执行后台程序这个看上去没什么难度,这里我们就一起来看一个asp.net中button控制先执行js再执行后台程序的实现方法,希望可以帮助到各位. 关于button这个服务器控件,我一直想减少它向服务器提交数据.那些检测,还是在客户端实现就好了. 这就需要javascript,但是我发现仅仅有javascript还是不够的.but

jQuery中ajax的使用与缓存问题的解决方法

本篇文章主要介绍了jQuery中ajax的使用与缓存问题的解决方法.需要的朋友可以过来参考下,希望对大家有所帮助 1:GET访问 浏览器 认为 是等幂的 就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配] 所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果   POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的)   防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之

C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法_C#教程

本文实例讲述了C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法.分享给大家供大家参考,具体如下: 在Winform中如果将一个透明图片放在窗体上能正常显示透明,但是如果将该图片放在另一个控件上会导致不能显示透明效果. 解决这种情况,可以采取在控件上使用GDI+绘画出透明图片. 这里我们就以一个pictureBox2控件上面重叠一张png透明图片为例: 我们只需要给pictureBox2控件添加Paint事件,然后对png透明图片进行绘制即可,代码如下: private voi

Jquery修改image的src属性,图片不加载问题的解决方法_jquery

1. 当点击某一按钮的时候,把图片域中的图片改变一下 <img id="randimg" src="/servlet/CreateValidateNum" width="60" height="20" /> <span style="cursor:hand" onclick="reflush();return false;">看不清</span> &l