Apache站点加载缓慢,可能允许重写或重写问题

时间:2012-07-15 20:33:02

标签: apache .htaccess mod-rewrite

我发现我的网站加载第一页的速度很慢,但在此之后很好,有些尝试使用apache配置可能会出现以下问题之一:

  1. AllowOverride - 我知道将AllowOverride设置为All可以减慢网站速度,因为它会在每个文件夹中查找.htaccess文件,因此我将配置移动到虚拟主机文件中并生成了AllowOverride没有因此关闭.htaccess文件,这最初似乎解决了问题但是当我再次尝试它时问题又回来了所以也许不是那样。

  2. 我删除了AllowOverride行,因此默认返回默认设置(无)。这似乎有所帮助,但有时它仍然会发生。

  3. 可能是重写规则:

    RewriteEngine On              
    
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(.+\.)?example\.com/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !google. [NC]
    RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
    RewriteCond %{HTTP_REFERER} !msn. [NC]
    RewriteCond %{HTTP_REFERER} !yahoo. [NC]
    RewriteRule ^.*$ - [F]    
    
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    
  4. 然而,有些网站不使用它,实际上甚至不使用重写但仍然很慢,所以这似乎也不是问题。

    有什么想法吗?

    编辑:

    即使是只有“Hello World”的简单HTML也存在问题,这不是问题的网站。

    它在以前版本的Apache上运行良好,但自从升级到2.4(当很多东西改变了特别是配置)时,它变得很慢。

1 个答案:

答案 0 :(得分:0)

我在使用Apache和RewriteRule加载CSS,JS和其他静态文件时遇到了一些问题。查看Chrome的开发人员工具>网络,如果你也有这个问题。在我的情况下,.php渲染速度很快但是我不得不等待10秒才能加载.css文件!如果这对你来说是一样的,我的修复也可能适合你。既然你声明第一次加载很慢而后来的加载很快(在浏览器中缓存css文件)我猜它会:)

不是让RewriteRule引擎处理所有静态文件,而是实际重写静态文件名......:

RewriteRule ^.*\.(jpg|gif|png|js|css|pdf|eot|woff|ttf|svg|ico)$ /$0 [L]

...最好不要打扰RewriteRule引擎处理静态文件名:

RewriteCond $0 !\.(jpg|gif|png|js|css|pdf|eot|woff|ttf|svg|ico|html)$

在你的情况下,你没有专门为你的静态文件设置RewriteRule,也没有RewriteCond,所以我认为alle请求只是传递给了RewriteRule引擎。

顺便说一下,我不知道为什么在Apache(2.4)下通过RewriteRule加载静态文件会出现这样的问题。任何人吗?

希望这对你有所帮助!