wsa*_*ton 3 css jsf http-caching google-chrome-devtools
我使用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>
Run Code Online (Sandbox Code Playgroud)
这是审计日志条目:
The following resources are explicitly non-cacheable. Consider making them cacheable if possible:
style.css.jsf
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我从库中删除它,这条消息就会消失.因此,看起来在库中缓存资源存在问题.
有没有办法来解决这个问题?
编辑:根据本回答中的一条评论,如果在页面上执行正常刷新,可能不会缓存CSS: 正确设置HTTP标头以强制缓存JS,CSS和PNG文件
那可能是对的吗?为什么书签或键入的URL不能重新使用缓存副本?
Bal*_*usC 12
这是一个错误的错误.
该library属性将库值添加为查询字符串,另请参阅什么是JSF资源库以及如何使用它?Chrome审核似乎会惩罚资源网址中的任何查询字符串,即使刷新期间的响应标头和实际浏览器行为完全有效.我刚试过自己的Chrome,我确实也能看到这个错误的错误.
如果你回"网络"选项卡,然后你一定要注意有效期Expires,ETag并Last-Mofidied响应头(没有Cache-Control),你必须遵守下面的浏览器行为:
如果这些资源真的"明确地不可缓存",就像Chrome Audit提到的那样,你会在每个案例中看到完整的HTTP 200响应.
资源URL中的查询字符串通常用作缓存清除技术.当资源在服务器端更新时,开发人员当然希望在客户端强制重新加载.一种方法是重命名资源路径/文件名,但另一种更常见的方法是更改查询字符串参数值(通常是表示版本或时间戳的值).
尝试更好的Web性能测试工具.例如YSlow.在我的例子中,它没有翻转资源URL中的查询字符串.
| 归档时间: |
|
| 查看次数: |
2708 次 |
| 最近记录: |