1

私が取り組んでいる Web サイトは、ページ (白いページのみを表示) と画像 (青いクエスチョン マークのみを表示) の読み込みをランダムに停止しているように見えますが、プレースホルダーは既に適切なサイズになっています)。

その場合、Web インスペクターに「ステータス 403、変更されていません」というメッセージが表示されます。これがページの場合、数バイトしかロードされておらず、開発者メニューから「ソースを表示」を選択できません。「リロード」を押すと、すでにキャッシュされているかのように、ページがすぐに表示されます。これは、キャッシュをクリアした直後にも発生し、最初に読み込もうとしたページにエラーが表示されます。

通常、これは、ページの読み込みがまだ完了していないときにリンクをクリックしたときに発生します。タイムラインを見ると、URL は既に新しいページに設定されていますが、Safari はまだ古いページからあらゆる種類のものをロードしており、最終的に新しいページをロードしようとするとタイムアウトします。

画像が正しく表示されない場合は、画像が読み込まれていることを示しています (「リソース」概要にエラーは表示されません)。また、リロード後、すべてがそこにあります。

私はよくグーグルで調べましたが、すでに何年もの間、多くの人がSafariで問題を抱えていて、画像が完全にロードされなかったり、ページが空白のページとして表示されたりしているようです. それにもかかわらず、これらの質問や苦情で言及されている Web サイトは、私の Safari では問題なく表示されています (eBay は、Google の画像だけでなく、よく言及されています)。

プリロード、遅延読み込み (画像を表示するときに src を data-src に設定)、リロード (画像が表示された後に src をそれ自体に設定) など、さまざまなことを試しました。また、Safari の開発者メニューでキャッシュをオフにしても、違いはないようです。コードエンドでこの問題を解決したいので、Apple フォーラムで提供されている DNS ソリューションを試しませんでした。

私の js を見ると、サイズ変更と遅延読み込みが行われていることがわかります。これらをすべてオフにしても、問題は解決しません。画像が非常に重いことを認識しています (ほとんどすべてが 500kb を超えています) - コンテンツは将来完全に制御できるものではないため、画像のサイズに関係なく解決策があることを願っています。

ページ: http://www.alique.nl/archive エラーを確認するには、サムネイルをクリックして画像を参照する必要があります。ランダムなページで発生するため(少なくとも一見)、より具体的なページを指すことはできません。

これは js ファイルです: http://www.alique.nl/js/lib.js

4

2 に答える 2

0

すべての.cssファイルと.jsファイルを結合するために使用する結合スクリプトを削除することで問題を解決しました:http: //rakaz.nl/projects/combine/combine.phps

なぜこれで解決したのかわかりません。.cssファイルや.jsファイル自体には何も変更していません。そして基本的に、combineスクリプトは、すべてのファイルを1つの大きな新しいファイルに貼り付けるだけで、既存のファイルに新しいものを追加することはありません。

また、エラーがそれほどランダムに発生したことも私にはあまり意味がありません。Safariのすべてのインストールで発生するわけではなく、常に同じページまたは同じ画像で発生するわけでもありません。.htaccessでキャッシュをオフにすると、何かが変わりましたが(より多くのコンピューターで機能するようになりましたが、すべてではありません)、以前は問題がなかった他の画像に影響しました(ロゴのように、ロードされませんでした)。ランダムページ)。

キャッシングとSafariには間違いなく奇妙な問題があるようです。同様の問題でここに来た人は、リモートでさえキャッシングと関係があるもの(als gzipなど)をオフにして、問題の原因を見つけることをお勧めします。

于 2012-10-26T15:27:11.767 に答える
0

サーバーがステータスを返すと、Safari304 Not Modifiedで間違った MIME タイプ ( text/plain) が指定されたようです (Web インスペクターを参照)。これにより、画像が正しく表示されなくなります。Mac と Windows の両方で発生します (Chrome では発生しないようです)。ただし、空白のページを再現できませんでした。

可能な解決策は、.htaccessファイル内の画像の MIME タイプを明示的に定義することです。

# Force correct mime-types
AddType image/gif .gif .GIF 
AddType image/jpeg .jpeg .jpg .jpe .JPG 

MIME タイプの完全なリストは、http://www.htaccess-guide.com/adding-mime-types/にあります。ただし、元のコンテンツは正しい MIME タイプで提供されるため、これは Safari のバグである可能性が高いため、これは機能しない可能性があります。

回避策ではありますが、微妙な解決策ではありませんが、キャッシュを完全に無効にすることです.htaccess

# Disable caching of resources in user-agent:
FileETag None
<ifModule mod_headers.c>
  Header unset ETag
  Header unset Last-Modified
  Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
  Header set Pragma "no-cache"
  Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>

またはPHPで:

// Disable caching of resources in user-agent:
header('ETag: ' . md5(time()) ); 
header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

これは、次の質問に関連している可能性があります:デバッグ メッセージ「リソースは他のものとして解釈されましたが、MIME タイプ application/javascript で転送されました」

于 2012-10-24T09:13:12.890 に答える