Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSS和Javascript在Tomcat8或9上加载的时间过长_Javascript_Css_Jsf_Tomcat - Fatal编程技术网

CSS和Javascript在Tomcat8或9上加载的时间过长

CSS和Javascript在Tomcat8或9上加载的时间过长,javascript,css,jsf,tomcat,Javascript,Css,Jsf,Tomcat,我有JSF应用程序,当我在嵌入式Jetty服务器上运行它时,它运行良好。然而,当我将其部署到Tomcat8.0.35时,加载CSS和Javascript文件需要20秒以上。我在AmazonAWS服务器上运行的Tomcat和在本地机器上运行的Tomcat上也有同样的问题。这些都是小文件,在Jetty服务器上加载的时间都不超过35毫秒 Tomcat日志并不表示应用程序存在任何类型的问题,这在每个页面上都会发生,甚至在登录页面上也是如此 Tomcat8和Tomcat9也有同样的问题,但Tomcat7没

我有JSF应用程序,当我在嵌入式Jetty服务器上运行它时,它运行良好。然而,当我将其部署到Tomcat8.0.35时,加载CSS和Javascript文件需要20秒以上。我在AmazonAWS服务器上运行的Tomcat和在本地机器上运行的Tomcat上也有同样的问题。这些都是小文件,在Jetty服务器上加载的时间都不超过35毫秒

Tomcat日志并不表示应用程序存在任何类型的问题,这在每个页面上都会发生,甚至在登录页面上也是如此

Tomcat8和Tomcat9也有同样的问题,但Tomcat7没有

如果有人能告诉我应该检查什么或如何查找问题的根源,我将不胜感激

编辑: 这是登录页面的h:head部分,但其他地方也存在同样的问题:

<h:head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="https://use.typekit.net/zvv0dgl.js"></script>
<script>try{Typekit.load({ async: true });}catch(e){}</script>
<title>ProSolo - Sign in</title>
<link href="#{request.contextPath}/resources/css2/bootstrap.min.css" rel="stylesheet" />
<link href="#{request.contextPath}/resources/css2/awesome-bootstrap-checkbox.css" rel="stylesheet" />
<link href="#{request.contextPath}/resources/css2/style.css" rel="stylesheet" />

尝试{Typekit.load({async:true});}catch(e){}
ProSolo-登录

编辑2(web.xml):

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:web="http://java.sun.com/xml/ns/javaee"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     metadata-complete="true" version="3.0">
    <display-name>ProSolo</display-name>
    <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <servlet>
    <servlet-name>fileServlet</servlet-name>
    <servlet-class>org.prosolo.services.upload.FileServlet</servlet-class>
    <init-param>
        <param-name>basePath</param-name>
        <param-value>/WEB-INF/resources</param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>fileServlet</servlet-name>
    <url-pattern>/files/*</url-pattern>
    </servlet-mapping>
    <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
    <filter-name>opensessioninview</filter-name>
    <filter-class>org.prosolo.core.spring.OpenSessionInViewFilter</filter-class>
    <init-param>
        <param-name>singleSession</param-name>
        <param-value>true</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>opensessioninview</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
    <filter-name>Login Partial Response Redirect</filter-name>
    <filter-class>org.prosolo.core.jsf.LoginPartialResponseRedirectFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>Login Partial Response Redirect</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
    <!--  
    <filter>
      <filter-name>PrimeFaces FileUpload Filter</filter-name>
      <filter-class>org.prosolo.core.jsf.primefaces.FileUploadFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>PrimeFaces FileUpload Filter</filter-name>
      <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
    -->
    <filter>
    <filter-name>gzipResponseFilter</filter-name>
    <filter-class>org.omnifaces.filter.GzipResponseFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>gzipResponseFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        org.prosolo.core.spring.SpringConfig,
        org.prosolo.core.spring.security.SpringSecurityConfig,
        org.prosolo.core.hibernate.HibernateConfig
    </param-value>
    </context-param>
    <context-param>
    <param-name>contextClass</param-name>
    <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
    </context-param>
    <context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
    </context-param>
    <!-- added for p:fileUpload, options: auto, native, commons-->
    <context-param>
    <param-name>primefaces.UPLOADER</param-name>
    <param-value>native</param-value>
    </context-param>
    <listener>
    <listener-class>org.prosolo.app.BeforeContextLoader</listener-class>
    </listener>
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    <listener>
    <listener-class>org.prosolo.app.AfterContextLoader</listener-class>
    </listener>
    <listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
    </listener>
    <listener>
    <listener-class>org.prosolo.web.SessionCountListener</listener-class>
    </listener>
    <error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/login.xhtml</location>
    </error-page>
    <error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/login.xhtml</location>
    </error-page>
    <session-config>
    <session-timeout>10</session-timeout>
    </session-config>
    <!-- In Production change javax.faces.FACELETS_REFRESH_PERIOD to -1 and javax.faces.PROJECT_STAGE to 'Production' -->
    <!-- In Development change javax.faces.FACELETS_REFRESH_PERIOD to 1 and javax.faces.PROJECT_STAGE to 'Development' -->
    <context-param>
    <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
    <param-value>-1</param-value>
    </context-param>
    <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value>
    </context-param>
    <context-param>
    <param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
    <param-value>true</param-value>
    </context-param>
    <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
    </context-param>
    <context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
    </context-param>
    <context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/functions.taglib.xml</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.el.parser.SKIP_IDENTIFIER_CHECK</param-name>
    <param-value>true</param-value>
    </context-param>
    <context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>none</param-value>
    </context-param>
    <context-param>
    <param-name>primefaces.PUBLIC_CAPTCHA_KEY</param-name>
    <param-value>***************************</param-value>
    </context-param>
    <context-param>
    <param-name>primefaces.PRIVATE_CAPTCHA_KEY</param-name>
    <param-value>********************************</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name>
    <param-value>20</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
    <param-value>false</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.myfaces.COMPRESS_STATE_IN_SESSION</param-name>
    <param-value>false</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.myfaces.annotation.SCAN_PACKAGES</param-name>
    <param-value>org.prosolo.web</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.myfaces.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME</param-name>
    <param-value>true</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.myfaces.USE_ENCRYPTION</param-name>
    <param-value>false</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.myfaces.ALGORITHM</param-name>
    <param-value>AES</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.myfaces.SECRET</param-name>
    <param-value>Q0hBTkdFIFNFQ1JFVCEhIQ==</param-value>
    </context-param>
    <context-param>
    <param-name>org.apache.myfaces.MAC_SECRET</param-name>
    <param-value>Q0hBTkdFIE1BQ1NFQ1JFVA==</param-value>
    </context-param>
    <context-param>
    <param-name>javax.faces.RESOURCE_EXCLUDES</param-name>
    <param-value>.class .jsp .jspx .properties .xhtml .xml</param-value>
    </context-param>
    <context-param>
    <param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name>
    <param-value>165535</param-value>
    </context-param>

    <listener>
    <listener-class>org.ocpsoft.rewrite.servlet.impl.RewriteServletRequestListener</listener-class>
    </listener>

    <listener>
    <listener-class>org.ocpsoft.rewrite.servlet.impl.RewriteServletContextListener</listener-class>
    </listener>

    <filter>
    <filter-name>OCPsoft Rewrite Filter</filter-name>
    <filter-class>org.ocpsoft.rewrite.servlet.RewriteFilter</filter-class>
    <async-supported>true</async-supported>
    </filter>
    <filter-mapping>
    <filter-name>OCPsoft Rewrite Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    <!-- <filter>
     <filter-name>Save Page Url In Session Filter</filter-name>
     <filter-class>org.prosolo.core.jsf.SavePageUrlInSessionFilter</filter-class>
   </filter>
   <filter-mapping>
     <filter-name>Save Page Url In Session Filter</filter-name>
     <url-pattern>/*</url-pattern>
     <dispatcher>FORWARD</dispatcher>
     <dispatcher>REQUEST</dispatcher>
   </filter-mapping> -->
</web-app>

普罗索洛
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.xhtml
文件服务器
org.prosolo.services.upload.FileServlet
基本路径
/WEB-INF/资源
文件服务器
/档案/*
字符编码滤波器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
字符编码滤波器
/*
opensessioninview
org.prosolo.core.spring.OpenSessionInViewFilter
单一会话
真的
opensessioninview
/*
登录部分响应重定向
org.prosolo.core.jsf.loginPartialResponseDirectFilter
登录部分响应重定向
/*
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
要求
gzipResponseFilter
org.omnifaces.filter.gzip响应过滤器
gzipResponseFilter
/*
要求
错误
上下文配置位置
org.prosolo.core.spring.SpringConfig,
org.prosolo.core.spring.security.SpringSecurityConfig,
org.prosolo.core.hibernate.HibernateConfig
上下文类
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
com.sun.faces.expressionFactory
com.sun.el.ExpressionFactoryImpl
primefaces.UPLOADER
本地的
org.prosolo.app.BeforeContextLoader
org.springframework.web.context.ContextLoaderListener
org.springframework.web.context.request.RequestContextListener
org.prosolo.app.AfterContextLoader
org.apache.myfaces.webapp.StartupServletContextListener
org.prosolo.web.SessionCountListener
javax.faces.application.ViewExpiredException
/login.xhtml
java.lang.Throwable
/login.xhtml
10
javax.faces.FACELETS\u刷新\u周期
-1
javax.faces.PROJECT_阶段
生产
com.sun.faces.enableRestoreView11兼容性
真的
状态保存方法:“客户端”或“服务器”(=默认值)。参见JSF规范2.5.2
javax.faces.STATE_保存方法
服务器
javax.faces.DATETIMECONVERTER\默认\时区\是\系统\时区
真的
javax.faces.FACELETS\u库
/WEB-INF/functions.taglib.xml
org.apache.el.parser.SKIP_IDENTIFIER_CHECK
真的
主题
没有一个
primefaces.PUBLIC\u验证码\u密钥
***************************
primefaces.PRIVATE\u验证码\u密钥
********************************
org.apache.myfaces.NUMBER\u会话中的\u视图\u
20
org.apache.myfaces.SERIALIZE_STATE_IN_SESSION
假的
org.apache.myfaces.COMPRESS\u STATE\u IN\u会话
假的
org.apache.myfaces.annotation.SCAN_包
org.prosolo.web
org.apache.myfaces.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME
真的
org.apache.myfaces.USE_加密
假的
org.apache.myfaces.ALGORITHM
AES
org.apache.myfaces.SECRET
Q0hBTkdFIFNFQ1JFVCEhIQ==
org.apache.myfaces.MAC_机密
Q0hBTkdFIE1BQ1NFQ1JFVA==
javax.faces.RESOURCE_排除
.class.jsp.jspx.properties.xhtml.xml
javax.faces.FACELETS\u缓冲区\u大小
165535
org.ocpsoft.rewrite.servlet.impl.RewriteServletRequestListener
org.ocpsoft.rewrite.servlet.impl.RewriteServletContextListener
OCPsoft重写过滤器
org.ocpsoft.rewrite.servlet.RewriteFilter
真的
OCPsoft重写过滤器
/*
向前地
要求
包括
错误

我建议使用
直接链接到CSS文件和java脚本,为了克服相对路径问题,在url前面加上
{request.contextPath}
,例如,要引用
资源/CSS/app.CSS
,请使用:


有关更多信息,请查看我在dzone的文章“”。

谢谢您的回答。但是,它完全按照您建议的方式连接,例如。你还有其他想法吗?事实上,所有以这种方式引用的资源都会在Tomcat 8和9上加载20秒,而从web加载的jquery.min.js会立即加载。你能粘贴你的部分吗?web.xml中有很多东西可能会导致问题,而框架和api的这种混合会造成混乱(myfaces、primefaces、spring)目前我的建议如下:(1)从web.xml中删除所有内容(过滤器和侦听器)并进行测试(最有可能有效),如果问题解决,然后开始逐个添加过滤器,直到问题解决