1

我发现我的网站加载第一页的速度很慢,但在那之后就很好了,一些对 apache 配置的试验表明以下问题之一可能是问题:

  1. AllowOverride - 我知道将 AllowOverride 设置为 All 会降低站点速度,因为它会在每个文件夹中查找 .htaccess 文件,因此我将配置移动到虚拟主机文件中并设置 AllowOverride None 从而关闭 .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]
    

但是有些网站不使用它,实际上甚至不使用重写并且仍然很慢,所以这似乎也不是问题。

有任何想法吗?

编辑:

问题不是站点,因为即使是只有“Hello World”的简单 HTML 也有问题。

它在以前版本的 Apache 上运行良好,但自从升级到 2.4(当很多事情发生变化时,尤其是配置发生变化时)它变得很慢。

4

1 回答 1

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,所以我猜所有请求都只是传递给 RewriteRule 引擎。

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

希望这对您也有帮助!

于 2012-08-27T08:04:11.090 回答