[英]iPhone not caching Asp.Net pages
如果我创建一个基本的asp.net应用程序并设置@outputcache,则该页面可以在桌面上的chrome&IE中很好地缓存。 对于default.aspx,第一个请求返回200,随后的请求返回304。 (我正在通过提琴手进行监视)
但是从iPhone访问同一页面时,我注意到它总是为aspx文件返回200。 所有资源都在缓存中,并且正在返回304。 因此,这只是aspx页面。
任何想法为什么会这样?
一些技术细节:
我想我知道了。 随时纠正我。 网站缓存是一个非常混乱的领域。
问题的根源在于,iPhone没有随请求一起发送“ If-Modified-Since”标头。 否则,服务器将无法回复304。
经过一些实验,我发现如果您使用链接导航到页面,它将发送'If-Modified-Since'标头,并且一切都按预期工作,并且服务器巧妙地返回304。
即使已缓存它也不会发送“ If-Modified-Since”的情况:
它似乎只对主URL进行了此操作,否则所引用的其他所有内容都具有“ If-Modified-Since”标头(如果适用)。
注意:我仅在IOS 4.3.1上进行了测试。 查看Paddo发送的链接并对该区域进行进一步调查,看来苹果喜欢在IOS版本之间更改缓存行为。
找到了这个,重新php(也适用于.net)... iphone似乎不缓存任何大小超过15k的资源,并且总缓存大小为1.5MB。 请注意,这是旧信息,因此可能已更改。
http://www.phpied.com/iphone-caching/
对于超过15k的文件,解决方案是使用脱机应用程序缓存清单文件,如下所示: http : //developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/Client-SideStorage/Client -SideStorage.html
PS:我知道您的内容长度在15k以下-因此必须解决其他问题...但是我仍然希望清单文件可以工作。
对于ASP.NET只需使用
Response.AddHeader( "Cache-Control","no-cache");
要么
Response.AddHeader( "Pragma", "no-cache");
要么
Response.Cache.SetCacheability(HttpCacheability.NoCache);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.