gpt4 book ai didi

css - 谷歌浏览器审计说 "The following resources are explicitly non-cacheable"来自库的 JSF 资源

转载 作者:行者123 更新时间:2023-11-28 09:02:05 25 4
gpt4 key购买 nike

我使用 Chrome 的审核功能来尝试找出我网站中的一些性能瓶颈。我发现了很多关于不可缓存资源的报告。

我在库中对包含样式表的单页进行了试运行,发现了同样的事情:

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html" >
<h:head>
<h:outputStylesheet library="default" name="style.css"/>
</h:head>
<h:body>
<div><h:outputText value="test"/></div>
</h:body>
</html>

这是审核日志条目:

The following resources are explicitly non-cacheable. Consider making them cacheable if possible:
style.css.jsf

有趣的是,如果我将它从库中删除,这条消息就会消失。因此,看起来库中的缓存资源存在问题。

有办法解决这个问题吗?

编辑:根据此答案中的一条评论,如果在页面上执行正常刷新,CSS 可能不会被缓存:Set HTTP headers properly to force caching on JS, CSS and PNG files

可以吗?为什么书签或输入的 URL 不能重新使用缓存的副本?

最佳答案

这是一个错误的错误。

library 属性将库值添加为查询字符串,另请参阅 What is the JSF resource library for and how should it be used? Chrome 审核似乎会惩罚资源 URL 中的任何 查询字符串,即使刷新期间的响应 header 和实际浏览器行为是完全有效的。我刚刚在自己的 Chrome 上试过,我确实也能看到这个错误。

如果您返回到“网络”选项卡,那么您必须注意有效的ExpiresETagLast-Mofidied 响应 header (以及没有 Cache-Control) 并且您必须观察以下浏览器行为:

  • 在空缓存中的新请求,或通过 Ctrl+F5 硬重新加载页面时,您必须在这些资源上看到 HTTP 状态 200。
  • 导航到引用完全相同资源的另一个页面,或再次单击完全相同(书签)链接,或再次按浏览器地址栏中的 Enter,您必须看到灰显的 HTTP 状态 200 和“来自缓存"在尺码列中。
  • 通过 F5 或 Ctrl+R 重新加载页面时,您必须在这些资源上看到 HTTP 状态 304(并且浏览器将收到更小的响应 — 只有响应 header ,没有正文 — 并继续使用缓存版本).

如果这些资源真的像 Chrome 审核中提到的那样“显式不可缓存”,那么您会在每种情况下看到完整的 HTTP 200 响应。

资源 URL 中的查询字符串通常用作缓存破坏技术。当服务器端更新资源时,开发人员当然希望在客户端强制重新加载。一种方法是重命名资源路径/文件名,但另一种更常见的方法是更改​​查询字符串参数值(通常是代表版本或时间戳的值)。

尝试一个更像样的网络性能测试工具。例如。 Y慢。在我的例子中,它没有触发资源 URL 中的查询字符串。

关于css - 谷歌浏览器审计说 "The following resources are explicitly non-cacheable"来自库的 JSF 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31231372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com