我使用这样的代码
string.Format("<img src='{0}'><br>", u.Avatar);
u.Avatar-它就像'/img/path/pic.jpg'
但是在这个网站上我可以上传新的图片而不是旧的pic.jpg。所以图片新,但名字很旧。和浏览器显示OLD图片(缓存)。如果我把随机数像/img/path/pic.jpg?123然后工作正常,但我只需要上传后,而不是总是。我怎么能解决这个问题?
答案 0 :(得分:5)
string imgUrl = _
string.Format("<img src='{0}?{1}'><br>", _
u.Avatar, _
FunctionThatLookupFileSystemForItsLastModified(u.Avatar).Ticks.ToString());
答案 1 :(得分:2)
不要直接链接到图像,而是考虑设置一个通用的HTTP处理程序来为图像提供服务。
MSDN: HTTP Handlers and HTTP Modules Overview
Stack Overflow: How to use output caching on .ashx handler
答案 2 :(得分:0)
再次阅读你的帖子,,,抱歉一般回答。
要解决此问题,请执行以下操作 在Application_Start上创建一个包含已上载图像的Dictionary,将其保存在Application对象上,将其设置为null。上传图像后,将其添加到此词典中。将每个地点的头像包含在你的网站上,其功能是在Dictionary中评估图像,如果找到则返回imagename.jpg?randomnumber,然后从Dictionary中删除它,否则只返回一个imagename.jpg。
这将会很重,因为您需要检查字典中的每个图像,但这将完全符合您的需要。
答案 3 :(得分:0)
将DateTime.Now.Ticks附加到图片网址:
string imgUrl =
string.Format("<img src='{0}?{1}'><br>", u.Avatar,DateTime.Now.Ticks);
编辑:我认为这种最佳实践甚至是我会使用的做法。鉴于随机实现不是真正随机的情况下给出的信息有限,这只是一个建议。
答案 4 :(得分:0)
您可以使用System.Web.Caching.CacheDependency命名空间设置缓存依赖性。 这可以设置上传文件的依赖性,并在文件更改时自动释放该文件的缓存。
MSDN和其他地方有很多文章和内容,所以我不会详细介绍所有细节。
您可以使用可用的工具执行缓存的插入,删除和其他管理。 (并且这不需要您更改文件名或添加内容 - 它通过文件系统知道文件已更改)