过期和CDNS - YSlow 问题

2023-12-19

首先我要提到的是,我已经进行了一些挖掘,但似乎找不到我要寻找的内容的正确答案。

我正在开发一个使用一些外部资源的网站:

  • 谷歌分析 (//www.google-analytics.com/analytics.js)
  • 最新的 jQuery 版本(http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js)
  • 谷歌字体(http://fonts.googleapis.com/css?family=Lato:400,300 http://fonts.googleapis.com/css?family=Lato:400,300)

使用内容分发网络 (CDN)

我在“使用内容交付网络 (CDN)”方面获得“F”等级。不同的SO Post https://stackoverflow.com/questions/7030252/yslow-what-does-clicking-add-cdn-doYSlow 常见问题解答链接(直接链接 http://yslow.org/faq/#faq_cdn)但这似乎表明我需要在浏览器上定义我的 CDN,这对我来说似乎是一个快速修复,但这并不能解决其他浏览器和/或设备上的问题。

添加过期标头

至于“添加过期标题”等级,我得到了 E。问题是,这就是我得到的:

There are 3 static components without a far-future expiration date.

(2014/2/26) http://fonts.googleapis.com/css?...
(2014/2/26) http://www.google-analytics.com/analytics.js
(2014/2/26) http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js

我该如何纠正这个问题?我的本地文件全部由我保管.htaccess如图所示,这里:

AddType image/x-icon .ico

ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/ico "access plus 1 year"
ExpiresDefault "access plus 7 days"

<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
    # access plus 1 year
    Header set Cache-Control "max-age=31536000"
</FilesMatch>

This SO post https://stackoverflow.com/questions/1439042/how-can-i-add-expire-headers-for-scripts-that-are-not-on-my-server似乎表明这是不可能的,或者我调用一个本地脚本,在其中使用我的带宽来加载(和缓存)所需的外部文件。

因此,考虑到这些事情,这就是我所关注的:

  1. 外部资源应该是 CDN,但 YSlow 会读取我的本地偏好,这些偏好会因用户而异,所以我需要一个替代方案about:configYSlow官方网站提出的解决方案。
  2. 过期时间是由文件所在的服务器设置的,所以我似乎无权定义它的过期值。因此,根据我收集的信息,我可以将这些文件传输到我的服务器上or使用本地 PHP 文件并从位于我的服务器的所述 PHP 文件缓存它,但这似乎不是最佳选择。有办法解决这个问题吗?

简短回答:

当您从外部服务器加载资源时,您无法控制太多,但对于您的网站来说可能仍然没问题。当使用像 YSlow 这样的工具时,重要的是不要在所有事情上都陷入“A”级。最好了解该工具为您提供的提示,并做出相应的决策。

较长的答案:

内容交付网络

YSlow 将报告其不识别为 CDN 的任何域的较低等级。你可以添加 CDN 主机名 http://yslow.org/faq/#faq_cdn,那么就会体现出更好的成绩。我想补充一下fonts.googleapis.com and ajax.googleapis.com因为两者的行为都类似于 CDN。将其视为在 YSlow 副本中保存首选项。在这里添加域实际上并不会改变您的性能,它只会提高您的分数。

标头过期

您无法控制从其他站点加载的内容的过期标头。您可以考虑的选项:

  1. 继续使用外部网站;在这种情况下,它们表现得非常好,您的表现可能也会非常好。忽略 YSlow 给你的低分即可。
  2. 在本地托管您的字体和 jQuery 文件,然后设置远期过期标头,如您在.htaccess。这将为您提供更好的 YSlow 等级,但如果您的服务器比 CDN 慢,实际性能可能会更差。 (看这个所以问题 https://stackoverflow.com/questions/15632092/loading-font-from-google-web-fonts-or-fonts-from-own-server-which-one-is-more-e)
  3. 使用外部网站但调整您的 URL;对于 jQuery,如果您指定更多版本级别(1.8.0 而不是 1.8),您将得到一个遥远的未来过期标头(请参阅此所以问题 https://stackoverflow.com/a/10610590/9965)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

过期和CDNS - YSlow 问题 的相关文章

  • 性能计数器的性能影响是什么

    当考虑使用性能计数器作为我公司的基于 NET 的站点时 我想知道使用它们的开销有多大 我是否想让我的网站不断更新其计数器 或者我最好只在测量时更新 设置性能计数器的开销通常不够高 无需担心 设置共享内存区域和一些 NET 对象 以及 CLR
  • 为单个方法引用大 DLL

    我想在 C 中使用大型类库 dll 中的单个方法 是否有性能或其他方面的缺点 我应该使用反射工具 读取 方法代码并将其复制粘贴到我的项目中吗 更新 硬盘空间不是问题 我的应用程序是网络应用程序 是否有性能或其他方面的缺点 唯一真正重要的是可
  • java - 简单计算在多线程中比在单线程中花费更长的时间

    我试图了解如何利用多线程 我写了一个简单的程序来增加i 比方说 使用两种方式 400 000 次 单线程方式 0 到 400 000 和多线程方式 在我的例子中 4 次 0 到 100 000 线程数等于Runtime getRuntime
  • 存储 PHP 数组的首选方法(json_encode 与序列化)

    我需要将多维关联数据数组存储在平面文件中以进行缓存 我偶尔可能会遇到需要将其转换为 JSON 以便在我的 Web 应用程序中使用的情况 但绝大多数时候我会直接在 PHP 中使用该数组 在此文本文件中将数组存储为 JSON 或 PHP 序列化
  • 有效地生成所有排列

    我需要尽快生成所有排列 https en wikipedia org wiki Permutation整数的0 1 2 n 1并得到结果作为NumPy https numpy org 形状数组 factorial n n 或者迭代此类数组的
  • 确定向量中是否存在元素的最有效方法

    我有几种算法取决于确定元素是否存在于向量中的效率 在我看来 这 in 这相当于is element 应该是最有效的 因为它只返回一个布尔值 在测试了几种方法之后 令我惊讶的是 这些方法是迄今为止效率最低的 以下是我的分析 随着向量大小的增加
  • 通过增加索引之和来生成排序组合的有效方法

    对于启发式算法 我需要一个接一个地评估特定集合的组合 直到达到停止标准 由于它们很多 目前我正在使用以下内存高效迭代器块生成它们 受到 python 的启发 itertools combinations http docs python o
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它
  • 大数组上的 SSE 性能较慢

    我是 SSE 编程新手 所以我希望有人可以帮助我 我最近使用 GCC SSE 内在函数实现了一个函数来计算 32 位整数数组的总和 下面给出了我的实现代码 int ssum const int d unsigned int len stat
  • 循环内的局部变量会被垃圾收集吗?

    我想知道将循环内引用的任何变量放在循环外是否更有效 或者它们可以像函数内的变量一样被垃圾收集吗 var obj key val for var i 0 i lt 10 i console log obj or for var i 0 i l
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack
  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能
  • Pandas dataframe:每批行的操作

    我有一个熊猫数据框df我想计算每批行的一些统计信息 例如 假设我有一个batch size 200000 对于每批batch sizerows 我想要一列的唯一值的数量ID我的数据框 我怎样才能做这样的事情呢 这是我想要的一个例子 prin
  • 迭代列表的奇怪速度差异

    我创建了两个重复两个不同值的长列表 在第一个列表中 值交替出现 在第二个列表中 一个值出现在另一个值之前 a1 object object 10 6 a2 a1 2 a1 1 2 然后我迭代它们 不对它们执行任何操作 for in a1 p
  • 红宝石接球和效率

    catch在 Ruby 中意味着跳出深度嵌套的代码 在 Java 中 例如用Java也可以达到同样的效果try catch用于处理异常 但它被认为是糟糕的解决方案 而且效率非常低 在 Ruby 中 我们有处理异常的方法begin raise
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • 为 PostgreSQL 查询选择正确的索引

    简化表 CREATE TABLE products product no integer PRIMARY KEY sales integer status varchar 16 category varchar 16 CREATE INDE
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • PHP 脚本不断执行 mmap/munmap

    我的 PHP 脚本包含一个循环 它只不过是回显和取消引用指针 如 tab othertab i gt 中的内容 直到昨天 这个脚本开始变得非常慢 比以前慢了 50 倍 之前 它一直运行良好 使用 strace 后 我发现 90 的情况下 脚
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl

随机推荐