1

我有一个 Rails 3 应用程序需要显示来自另一个应用程序的图像。这些图像会随着时间而变化,所以我有一个每小时运行一次的任务来检查变化。出于性能原因,我想用我自己的应用程序提供的那些图像(所以 1 个图像和 1 个 css 文件)创建一个精灵。

理想情况下,我希望 Sprockets 以与处理我的应用程序中的任何其他图像和样式表相同的方式处理这些文件,因此我不必推出自己的缩小、gzip、缓存等解决方案。

有没有办法在运行时挂接 Sprockets,这样我就不必停止服务器、预编译并再次启动服务器?

4

1 回答 1

0

我无法找到任何方法来连接链轮。

对于那些好奇的人,我通过以下方式解决了这个问题(但省略了缩小/gzip 部分,因为微小的性能提升并不能证明复杂性是合理的):

  1. 像往常一样创建精灵文件。
  2. 确定图像的 md5 哈希值。
  3. 使用 md5 哈希值作为文件名的一部分将新文件复制到公用文件夹。
  4. 将新文件发送到集群中的所有服务器。
  5. 更新所有服务器上的配置变量以了解要服务的文件(例如 MyApp::Application.config.tool_icon_md5_key)。
  6. 从集群中的所有服务器中删除旧文件。

聚类实际上是最困难的部分。关键是避免一台服务器请求新文件但处理该请求的服务器实际上还没有该文件的情况。

于 2012-06-28T20:27:13.420 回答