是否优化了减少Web服务器查找inode号的磁盘访问次数?

时间:2012-12-09 22:00:19

标签: webserver inode document-root

Web服务器通常具有文档根,表示通过Web可见的文件系统子树。因此,例如,如果文档根目录是:/ home / foouser / public_html /,则web服务器会将http://www.foo.com/pics/foo.jpg的请求映射到/home/foouser/public_html/pics/foo.jpg。这导致一系列磁盘请求获取foo.jpg的inode-number。

Web服务器是否进行任何优化以减少磁盘访问次数(或者)是服务器管理员将文档根目录设置为尽可能接近“/”的角色,以减少磁盘数量 - 访问文件名到inode号码翻译?

1 个答案:

答案 0 :(得分:0)

我知道这不是您问题的直接答案,但通过设置缓存策略,您可以大幅减少磁盘读取。特别是如果您的静态内容未托管在您的服务器上。

选项:

  • CDN上的主机静态内容:
    • 优点:将所有负载卸载到其他人的网络上。成本?
    • 缺点:可能减少控制。成本?
  • 使用Contendo / Akamai,它也是一个CDN,但有一些差异。
    • 优点:托管您的内容,但在第一次阅读后,cdn将根据您随内容发送的标头(静态或非静态)处理缓存
    • 缺点:有时标题真的很难管理。当您想要替换旧内容时,缓存清除(破坏您自己的缓存)可能很烦人。
  • 在本地缓存内容。如果您正在进行数据库请求,则可以缓存请求。下次运行代码时,首先检查内存缓存(而不是立即发出db请求)。您可以在应用程序控制器/路由级别缓存整个页面,检查是否存在页面/资产的缓存版本并提供服务。
    • 优点:很多控制权。你几乎可以缓存任何东西。
    • 缺点:在每件小事上设置缓存的工作量很大。您需要为网站的每个部分制定策略。

我的建议是首先将资产转移到AmazonS3或Rackspace或其他东西。 Joyent也有这方面的东西。然后,您可以为s3启用cloudfront,这将打开cdn,cdn可以缓存各个区域的内容。这是一个非常便宜的解决方案(取决于您拥有的文件数量)。

你也可以去竞选路线。

应用程序端路由上的缓存需要相当多的工作,完全取决于您的服务器/语言/ db /配置。

相关问题