.htaccess、YSlow 和“使用无 cookie 域”

Posted

技术标签:

【中文标题】.htaccess、YSlow 和“使用无 cookie 域”【英文标题】:.htaccess, YSlow, and "Use cookie-free domains" 【发布时间】:2010-11-28 19:42:56 【问题描述】:

YSlow 的一项衡量指标是使用无 cookie 的域来提供静态文件。

"当浏览器请求静态 图像并发送 cookie 请求,服务器忽略 饼干。这些 cookie 是不必要的 网络流量。要解决此问题 问题,请确保静态 组件要求 无 cookie 请求通过创建 子域并将它们托管在那里。”- 雅虎YSlow

我将此解释为,如果我将 www.example.com/images 移至 static.example.com/images,我可以体验到性能提升。

虽然这很容易做到,但我会失去在我的内容管理系统 (Joomla/WordPress) 中轻松引用和链接到这些图像的便捷功能。

是否可以使用 .htaccess 将 www.example.com 上特定文件夹的所有请求重定向到 static.example.com 上的文件夹?这种方法是否还会让 CMS 误以为图像位于其自己域的默认位置?

【问题讨论】:

似乎一致认为.htaccess 可用于将 www.example.com/images 的请求重定向到 static.example.com/images;工作量会降低性能。只有在单个请求中直接从无 cookie 域访问文件时,才会出现性能提升。另一个想法是使用动态创建引用的插件。谢谢大家的建议。 【参考方案1】:

是否可以使用 .htaccess 重定向所有请求 对于 www.example.com 上的特定文件夹到 改为 static.example.com?

可能,但适得其反——客户端必须发出 HTTP 请求,获得重定向响应,然后发出另一个 HTTP 请求。

这比保存单行 cookie 数据的成本要高得多!

这种方法是否也会使 CMS 误以为图像 位于其自己域的默认位置?

没有。

【讨论】:

【参考方案2】:

虽然这很容易做到,但我会 失去了我体内的得心应手的能力 内容管理系统 (Joomla/WordPress) 轻松参考 并链接到这些图片。

您可以尝试在 Joomla 中创建一个插件,以动态创建这些引用。

例如,您有一个插件,当您在文章中输入 dinamic_path path 时,它会将“static.example.com/images”附加到提供的路径中。因此,每次您需要更改服务器路径时,只需更改插件即可。对于已经在数据库中的链接,可以尝试使用phpMyAdmin在这个结构中进行更改。

它仍然失去了 TinyMCE 中所见即所得的能力,但它是一种替代方案。

【讨论】:

感谢 GmonC 的想法,但可能超出了我的技能范围。 Joomla 和 Wordpress 都有大型插件库吗,我有点希望我已经找到了类似的东西。 可以在Joomla官网搜索扩展目录。有一个名为“DirectPHP”的插件,你可以编写一个 5 行的 php 脚本并从一篇文章中调用它。但我同意有时我们只想要一个已经工作的解决方案:因为它是一个 cms,它应该已经实现了一些功能。好吧,祝其他提供的解决方案好运! ATG Dynamo 是一个商业(而且非常昂贵!)的 webapp 框架,它可以做到这一点。您在其 CMS 中使用图像,当您部署内容时,它可以将图像推送到专用网络服务器,然后在页面上生成正确的 URL。这是一个好主意,而且实施起来肯定不那么难,所以我很惊讶它没有得到更广泛的实施。【参考方案3】:

理论上,您可以创建一个直接指向图像文件夹的虚拟域,例如 images.example.com。然后在您的 CMS(希望在主题层)中,您可以将指向 images 文件夹的任何路径替换为子域的绝对路径。

【讨论】:

【参考方案4】:

与简单地保持原样相比,重定向会导致更多的网络流量和更多更多的延迟。

【讨论】:

【参考方案5】:

它会重定向请求,但客户端仍会将其 cookie 发送到服务器,所以实际上你什么也没做。您必须直接从不存储 cookie 的域访问文件才能正常工作。

【讨论】:

【参考方案6】:

您真正想要做的是使用 staticexample.com/images 而不是 static.example.com/images,这样您就不会在您可能设置的 example.com 域上获取任何 cookie。如果您所做的只是使用简单的 apache 服务器或其他东西从该域中获取服务器图像,那么您可以将该服务器配置为不返回会话 cookie。

重定向是一个非常糟糕的主意。 Cookie 会导致一些性能下降,但到服务器的往返行程(例如重定向)会导致更严重的性能问题。

【讨论】:

【参考方案7】:

我在下面做了并获得了成功:

<FilesMatch "!\.(gif|jpe?g|png)$">
    php_value session.cookie_domain example.com
</FilesMatch>

意思是如果你没有在cookie信息中设置图片。 然后图像在服务器上是无 cookie 的。

【讨论】:

这不符合 OP 的要求。 nginx 有类似的吗? 为我的网站显示 503 如何为 Nginx 设置相同的值?

以上是关于.htaccess、YSlow 和“使用无 cookie 域”的主要内容,如果未能解决你的问题,请参考以下文章

.html、.css、.js 的 htaccess UTF-8 编码 - 最好的方法是啥?

YSlow

Yslow on Nodejs server

Web页面性能优化(YSlow)

Yslow

YSLOW(一款实用的网站性能检测工具)