Warum hängen einige Seitenanforderungen beim Abrufen von Javascript- / Bild-Assets mit Safari und Apache 2.2.3?

Einige Benutzer unserer Ruby on Rails-App haben sich darüber beschwert, dass Seitenanforderungen unter Safari gelegentlich auf unbestimmte Zeit hängen bleiben (einige haben dies unter Firefox bemerkt, aber es sind überwiegend Safari-Benutzer). Nach einigen Nachforschungen scheint es, dass diese Anfragen von unserer Rails-Anwendung korrekt bearbeitet werden und der Fehler beim Abrufen von Image-Assets (die auf demselben Server gehostet werden) auftritt, auf die im HTML verwiesen wird.

Wir haben Apache so konfiguriert, dass es die Image-Assets direkt bereitstellt und die Rails-App für die Leistung umgeht. Wir haben auch die gzip-Komprimierung für Text- / Javascript- / CSS-Assets aktiviert. Nachfolgend finden Sie die relevanten Einstellungen aus unserer Apache Virtual Host-Konfiguration. Vielleicht haben wir dies so konfiguriert, dass diese willkürlichen Hängeanforderungen möglicherweise erklärt werden.

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>

Hat jemand schon einmal ein ähnliches Problem gehabt?

Unsere Ruby on Rails-Webanwendung wird mit mod_rails und Apache 2.2.3 unter RedHat Enterprise Linux 5 ausgeführt.

Aktualisieren: Ich habe jetzt versucht, den folgenden Block zu entfernen, und das Problem besteht weiterhin, sodass wir den Expires-Header anscheinend vom Problem ausschließen können:

ExpiresActive On
<FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
  ExpiresDefault "access plus 1 year"
  Header append Cache-Control "public"
</FilesMatch>

Antworten auf die Frage(5)

Ihre Antwort auf die Frage