Почему некоторые запросы страниц зависают при извлечении ресурсов Javascript / изображений с использованием Safari и Apache 2.2.3?
Некоторые пользователи нашего приложения Ruby on Rails жаловались на то, что запросы страниц иногда зависают на неопределенное время в Safari (пара заметила это в Firefox, но это в подавляющем большинстве случаев пользователи Safari). После некоторого исследования кажется, что эти запросы правильно обрабатываются нашим приложением Rails, и зависание происходит при получении ресурсов изображения (которые размещены на том же сервере), на которые есть ссылки в HTML.
Мы настроили Apache для непосредственного обслуживания графических ресурсов и обхода приложения Rails для повышения производительности. Мы также включили сжатие gzip для ресурсов text / javascript / css. Ниже приведены соответствующие настройки из нашей конфигурации виртуального хоста Apache - возможно, мы настроили это таким образом, чтобы объяснить эти произвольные запросы зависания?
RewriteEngine On
# Correct behaviour of IE under SSL
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
SSLEngine On
SSLCertificateFile /etc/httpd/conf/ssl/_.mycert.com.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/_. mycert.com.key
SSLCertificateChainFile /etc/httpd/conf/ssl/gd_bundle.crt
RequestHeader set X_ORIGINAL_PROTOCOL 'https'
RequestHeader set X_FORWARDED_PROTO 'https'
# Rewrite index to check for static
RewriteRule ^/$ /index.html [QSA]
RewriteRule "^/(images|stylesheets|javascripts|system)/?(.*)" "$0" [L]
# Rewrite to check for Rails cached page
RewriteRule ^([^.]+)$ $1.html [QSA]
# Deflate
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
ExpiresActive On
<FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
ExpiresDefault "access plus 1 year"
Header append Cache-Control "public"
</FilesMatch>
Кто-нибудь сталкивался с подобной проблемой раньше?
Наше веб-приложение Ruby on Rails работает с использованием mod_rails и Apache 2.2.3 в RedHat Enterprise Linux 5.
Update: Теперь я попытался удалить следующий блок, и проблема все еще сохраняется, так что похоже, что мы можем исключить заголовок expires из проблемы:
ExpiresActive On
<FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
ExpiresDefault "access plus 1 year"
Header append Cache-Control "public"
</FilesMatch>