【问题标题】:Pdf viewing cached problem on same filme name for all browserspdf查看所有浏览器相同电影名称的缓存问题
【发布时间】:2021-10-11 09:44:29
【问题描述】:

我开发到 .net core mvc Web 项目。但是当我尝试在网络浏览器(即:Chrome、Edge、资源管理器、firefox ..)上显示 PDF 时,我首先将 pdf 保存为“myfirstlist.pdf”,然后将 pdf 更新为同名“myfirstlist.pdf”,但我的无法反映文档更改。这是一般的缓存问题吗?

我的动作 Pdf 正在查看:

 [HttpGet]
 public PhysicalFileResult OnGetDownload(string fileName)
 {
 string downloadPath = Path.Combine(Directory.GetCurrentDirectory(), @"C:\", fileName);
  return new PhysicalFileResult(downloadPath, "application/pdf");
 }

【问题讨论】:

  • 嗨,你的意思是你有一个本地 pdf 文件并让它显示在浏览器中,然后你创建了一个新的不同的 pdf,但与旧的同名并替换了旧的一。你在浏览器中显示了这个文件,但在浏览器中显示的是旧 pdf 的内容?
  • 是的,但是我的 pdf 从服务器端加载和显示。本地没有。但我仍然找不到解决方案,我尝试了一些类似的问题,即:IIS缓存问题this link,但我有一个疑问,因为如果我阻止了所有缓存机制用户身份验证和授权信息可能会丢失?今天,我仍然在寻找解决方案.. @TinyWang
  • 我还没有测试,但我认为它是缓存的结果。我分享我的想法,因为我曾经使用它来解决缓存问题,即在请求 url 中添加一个时间戳,以使每个请求都是唯一的,以避免缓存负载。代码示例如下:var getTimestamp=new Date().getTime(); if(url.indexOf("?")>-1){url=url+"&timestamp="+getTimestamp}else{url=url+"?timestamp="+getTimestamp } return url; }
  • 首先感谢您的回复,时间戳请求参数是否应该像fileName一样在我的参数中?我现在正在尝试,它给了我 404 not found 错误。我的浏览器链接如下:http://mywebsite.com/myprojectModule/myView/OnGetDownload?fileName=\\192.168.x.yy\MyShareFolder\MyDocs\myfirstlist.pdf?timestamp=1628486956405 @TinyWang
  • 替换'?'到'&'

标签: asp.net-core pdf pdfview browser-support


【解决方案1】:

总结这里的评论,我假设这个问题是由缓存引起的,所以我认为我们可以在 url 中添加一个时间戳,以使每个请求都是唯一的以避免缓存。

像这样:

var getTimestamp=new Date().getTime();
url = "localhost:port/getpdf?your_param=xxx&timestamp="+getTimestamp;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-22
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 2011-10-14
    • 2011-08-18
    相关资源
    最近更新 更多