2014-10-30 54 views

回答

3

我们有同样的问题,因为我们在本地存储FA CSS文件。字体@import的刷新失败,可能是因为它执行的是与本地文件不同的HTTP调用。我们恢复到他们的CDN,并解决了问题。如果你下载的文件FA和不通过CDN在拉他们,然后更改您的<head><link>标签:

<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> 

一旦我们做到了FontAwesome正在担任了在每次刷新时没有问题。

+1

这不是一个完整的答案。有谁知道实际问题是什么? IE不喜欢使用CSS的本地副本吗?我有这个问题,但我必须在本地托管文件做项目限制。 – Mike 2015-10-19 18:39:16

+0

导致此问题的问题在此答案中有更详细的描述:http://stackoverflow.com/a/32628649 – philreed 2016-01-25 12:11:19

2

在我的情况下,我使用的是java,唯一可行的是我创建的这个缓存过滤器。

import java.io.IOException; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebFilter("*") 
public class CacheFilter implements Filter { 

    /** 
    * @constructor CacheFilter 
    * @date 28/09/2015 
    */ 
    public CacheFilter() { 
     //construtor 
    } 

    /* (non-Javadoc) 
    * @see javax.servlet.Filter#destroy() 
    */ 
    @Override 
    public void destroy() { 
     //metodo vazio 
    } 

    /* (non-Javadoc) 
    * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) 
    */ 
    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     HttpServletResponse httpResponse = (HttpServletResponse) response; 
     HttpServletRequest httpRequest = (HttpServletRequest) request; 
     String page = httpRequest.getRequestURI(); 

     if (!page.contains("fontawesome-webfont") || !page.endsWith(".eot")){ 
      httpResponse.setHeader("Expires", "-1"); 
      httpResponse.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); 
      httpResponse.setHeader("Pragma", "no-cache"); 
     }else if(page.contains("fontawesome-webfont") && page.endsWith(".eot")){ 
      httpResponse.setHeader("Expires", "-1"); 
      httpResponse.setHeader("Cache-Control", "public"); 
      httpResponse.setHeader("Pragma", "cache"); 
     } 

     chain.doFilter(request, response); 
    } 

    /* (non-Javadoc) 
    * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) 
    */ 
    @Override 
    public void init(FilterConfig fConfig) throws ServletException { 
     //metodo vazio 
    } 

} 
0

我做同样的事情,https://stackoverflow.com/a/37196841/1982385只是我做这件事是反向代理(HAProxy的),而不是从servlet本身。

backend app 
    server server1 10.10.14.4:9090 check 
    acl is_woff capture.req.uri -m sub .woff 
    acl is_ttf capture.req.uri -m sub .ttf 
    acl is_eot capture.req.uri -m sub .eot 
    http-response set-header Cache-Control public if is_eot or is_woff or is_ttf 
    http-response set-header Expires -1 if is_eot or is_woff or is_ttf 
    http-response set-header Pragma cache if is_eot or is_woff or is_ttf