我有一个页面,其中有包含用户数据和每一行的表格(每个用户都有自己的名片,这是一个引用存储在服务器上的 pdf 的标签。
<td class="business_card">
<a href="/static/users_documents/9/business_card.pdf" target="_blank">
<img src="/static/images/business_card.png" name="business_card" alt="business_card_image">
</a>
</td>
Run Code Online (Sandbox Code Playgroud)
当用户发送 post 请求时,服务器上以前的 pdf 文件被删除并创建新的 pdf。但是,问题是浏览器缓存旧版本的文件,我每次都必须按CTRL+F5硬刷新缓存,然后我才能从服务器而不是缓存中看到文件。
我是否需要使用 JavaScript 来清除缓存?
另外,我对页面的标记引用如下:
https://192.168.2.244/static/users_documents/9/business_card.pdf
Run Code Online (Sandbox Code Playgroud)
该页面的 html 是由 Firefox 创建的,用于显示我的 pdf 文件。
一些可能有帮助的附加信息是我在 Ubuntu 16.04.3 上使用 Nginx 服务器。
在我的应用程序中,我正在实现一项功能,其中某些部分我需要使用 SFSafariViewController 打开我的网站。为此,我也不希望用户在 Web 应用程序中再次登录,因此在打开 SFSafariViewController 之前,我想传递一些令牌、邮件和其他所需信息。那么这是否可行并且允许我使用浏览器缓存。
我有一个"浏览图片"功能,其中有缩略图,当用户点击它时,它会展开.
现在,这两个图像都存储在不同大小的单独虚拟目录中,较大的是200*200像素.
它仍然只显示较小的图像,当我点击它放大,而不是200*200图像.
当我在登录页面时,我得到一个ViewExpiredException,它不应该是.所以我在过滤器上读了一篇文章(由BalusC推荐).可能是页面是从浏览器的缓存加载而不是从服务器加载.所以我已经实现了这段代码
@WebFilter(servletNames={"Faces Servlet"})
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpServletResponse httpRes = (HttpServletResponse) response;
if (!httpReq.getRequestURI().startsWith(httpReq.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc)
httpRes.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
httpRes.setHeader("Pragma", "no-cache"); // HTTP 1.0.
httpRes.setDateHeader("Expires", 0); // Proxies.
}
chain.doFilter(request, response);
}
// ...
@Override
public void init(FilterConfig filterConfig) throws ServletException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 通过HTML 5样板模板观察了他们使用过的几个地方
<!-- CSS : implied media="all" -->
<link rel="stylesheet" href="css/style.css?v=1">
<!------ Some lines removed ------>
<script src="js/plugins.js?v=1"></script>
Run Code Online (Sandbox Code Playgroud)
但这有什么用呢?查询字符串如何工作?我没有更改文件名,也没有用查询字符串(?v = 1)编写任何脚本.
我错过了什么?我是否需要更改文件名,还是需要有一个存储库以确保其正常工作?
作为jQuery用户,我使用链接来自Google的远程库
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
这非常聪明,因为如果读者访问了另一个同样的网站,它已经被加载到浏览器缓存中.
当我发现Phaser时,我希望看到网络上的人也这样做
<script src="https://raw.githubusercontent.com/photonstorm/phaser/master/build/phaser.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
或任何图书馆主持人,但显然没有人这样做.
Phaser用户有没有这样做的原因?
我发现我的应用程序经常出现意外问题,因为用户在浏览器中缓存了模板.我试过,$window.location.reload(true)但即使这样,chrome也会从缓存中提供模板.
有没有一个简单的解决方案,比如使用Interceptor之类的东西动态地向模板URL添加版本查询参数?
所以我在我的新服务器上遇到了这个非常奇怪的错误,其中CSS不会在浏览器中更新.刷新和清除缓存不起作用.然后我打开FileZilla,看看更新的CSS文件是否实际上是使用FTP上传到服务器,然后当我将css文件的副本拖到我的桌面时,css文件会神奇地更新.PHP文件更新很好.
这是我如何包含CSS: <link rel="stylesheet" type="text/css" href="css/stylesheet.css">
我不知道发生了什么以及如何解决这个问题,所以任何帮助都将不胜感激!