【问题标题】:YSlow rule 8 (Make JavaScript and CSS External) vs valid html5YSlow 规则 8(使 JavaScript 和 CSS 外部化)与有效的 html5
【发布时间】:2011-06-19 09:13:06
【问题描述】:

我喜欢 YSlow。并在遵守规则时尝试使用常识。但是为了好玩,我试图让我的 ASP.NET MVC 站点获得 100 分。而且我快到了(目前为 99 分,甚至将我的站点镜像到不同的服务器并更改 about:config 以模拟 CDN )。

经过测试,我发现要在规则 8 上获得满分(2 个内联脚本会被扣一分),您必须违反 HTML5 语法规则(根据the w3c validator)。我认为这也适用于 HTML4 语法规则。

例如不扣分(违反 HTML5 语法规则):

<script type="text/javascript" src="/ui/scripts/lib/core.js" />

对于有效的 HTML5,但会扣除 YSlow 分数:

<script type="text/javascript" src="/ui/scripts/lib/core.js"></script>

我的假设是,在某种意义上这是正确的,因为网络浏览器将扫描第二个示例中的任何脚本,而不是第一个示例中的任何脚本(因为第二个是打开和关闭标记)。

有没有人知道另一种解决方法?一个完美的 100 分能否仍然具有有效的 HTML5?

【问题讨论】:

    标签: html yslow


    【解决方案1】:

    在这两种情况下,您都可以从脚本标签中删除type="text/javascript"。但是,是的,您需要一个结束脚本标记。

    YSlow 在这里不正确。

    【讨论】:

    • 不知道 type 属性在 HTML5 中是可选的(因为它在 HTML4 中没有默认值)。很高兴知道。但不确定YSlow是否在这里不正确,请考虑一下。如果我的假设是正确的,渲染引擎会查看打开/关闭标签并停止期待一些 js 代码(可能永远不会注意到)。但这仍然是一项需要完成的操作。 YSlow 告诉我们永远不要使用内联脚本。我同意不应该使用违反 HTML5 语法规则的规则,但也许这可以解释为什么该规则首先存在。
    猜你喜欢
    • 2011-08-26
    • 2023-03-06
    • 1970-01-01
    • 2011-10-06
    • 2016-01-19
    • 2016-04-09
    • 2021-01-14
    • 1970-01-01
    相关资源
    最近更新 更多