Javascript 为什么我的CSS加载会有时间延迟?

Javascript 为什么我的CSS加载会有时间延迟?,javascript,css,Javascript,Css,我在维基百科上也看到了这种效果。当我第一次进入页面时,站点从非css版本的站点变为css版本的站点时会闪烁 最近,我在我的网站上也看到了这一点 奇怪的是,我遵循Google Chrome调试审计员的建议,在其他任何事情发生之前将CSS加载到文档的头部 注意 已在FF和Safari中验证。您正在强制CSS样式表在每次请求时刷新: /dev/.../source/xyz.css?_time=1362858256183 这可能就是为什么你偶尔会看到未格式化内容的闪现。通常只有在某些内容发生更改时才强

我在维基百科上也看到了这种效果。当我第一次进入页面时,站点从非css版本的站点变为css版本的站点时会闪烁

最近,我在我的网站上也看到了这一点

奇怪的是,我遵循Google Chrome调试审计员的建议,在其他任何事情发生之前将CSS加载到文档的头部

注意


已在FF和Safari中验证。

您正在强制CSS样式表在每次请求时刷新:

/dev/.../source/xyz.css?_time=1362858256183
这可能就是为什么你偶尔会看到未格式化内容的闪现。通常只有在某些内容发生更改时才强制重新加载,并允许客户端缓存样式表,直到那时

然后我注意到您正在使用JavaScript加载样式表。我不能在这里给你任何数字,但如果你真的对速度感兴趣,那么将参考放入原始HTML中可能是值得的:

<link rel="stylesheet" href="...">


允许浏览器使用任何和所有预取和其他机制

您正在强制CSS样式表在每次请求时刷新:

/dev/.../source/xyz.css?_time=1362858256183
这可能就是为什么你偶尔会看到未格式化内容的闪现。通常只有在某些内容发生更改时才强制重新加载,并允许客户端缓存样式表,直到那时

然后我注意到您正在使用JavaScript加载样式表。我不能在这里给你任何数字,但如果你真的对速度感兴趣,那么将参考放入原始HTML中可能是值得的:

<link rel="stylesheet" href="...">



允许浏览器使用任何和所有预取和其他机制

你要找的术语是FOUC(未格式化内容的Flash)。然而,以目前的形式来看,这个问题几乎没有什么依据。能否显示一些数据,样式表加载的速度有多快?也许是一个实时链接?像往常一样,如果我知道什么是相关的,我会添加它。正如我所说的,我遵循了最佳实践。一个实时链接可能是这样吗?…我已经提到了这一点…在你提供的链接中,你没有在文档头中加载任何样式表,它都来自你的JS。你要寻找的术语是FOUC(非样式化内容的Flash)。然而,以目前的形式来看,这个问题几乎没有什么依据。能否显示一些数据,样式表加载的速度有多快?也许是一个实时链接?像往常一样,如果我知道什么是相关的,我会添加它。正如我所说的,我遵循了最佳实践。一个实时链接可能是这样吗?…我已经提到了这一点…在您提供的链接中,您没有在文档头中加载任何样式表,所有样式表都来自您的JS。@完全可以肯定,但最终结果是浏览器必须在您每次加载站点上的页面时获取CSS。那不是很有用。(我还加了一段,看看。)@pure-re-development模式-好吧,不过偶尔的FOUCs可能是代价。如前所述,如果您感兴趣,有更好的实践来捕捉样式表的更改。另外,为什么不使用普通的HTML标记加载CSS呢?为什么JavaScript会绕道?@pure如果强制浏览器在每次加载页面时执行多个请求,则样式表可能无法及时完成。我打赌这是正常的。除非您在不强制刷新所有内容的生产环境中看到这一点,否则可能不需要担心。如前所述,如果您想确保某些内容首先附加到头部,为什么不将其作为HTML放在那里呢。你的JS肯定会比头中真正的
元素晚一点执行。。。你说得对,浏览器非常不一致。@pure是的。如果您想确保CSS/JS在更改时总是得到刷新,但在未更改时得到缓存,您可以查看服务器端,它们会根据文件的内容创建一个哈希:
my.CSS?v=3123442423423
,这样您就不必添加时间戳-当文件更改时,哈希会更改change@pure足够公平;请记住,我们不可能知道您没有提到的内容。@当然可以,但最终的结果是,每次您在站点上加载页面时,浏览器都必须获取CSS。那不是很有用。(我还加了一段,看看。)@pure-re-development模式-好吧,不过偶尔的FOUCs可能是代价。如前所述,如果您感兴趣,有更好的实践来捕捉样式表的更改。另外,为什么不使用普通的HTML标记加载CSS呢?为什么JavaScript会绕道?@pure如果强制浏览器在每次加载页面时执行多个请求,则样式表可能无法及时完成。我打赌这是正常的。除非您在不强制刷新所有内容的生产环境中看到这一点,否则可能不需要担心。如前所述,如果您想确保某些内容首先附加到头部,为什么不将其作为HTML放在那里呢。你的JS肯定会比头中真正的
元素晚一点执行。。。你说得对,浏览器非常不一致。@pure是的。如果您想确保CSS/JS在更改时总是得到刷新,但在未更改时得到缓存,您可以查看服务器端,它们会根据文件的内容创建一个哈希:
my.CSS?v=3123442423423
,这样您就不必添加时间戳-当文件更改时,哈希会更改change@pure足够公平;记住,我们不可能知道你没提到的事情。