5

私の Django プロジェクトでは、アプリケーション my_app に javascript 静的ファイルを参照するテンプレートがあります。

<script src="{% static 'my_app/my_script.js' %}"></script>

my_app/templates/my_app に my_script.js をインストールすると、すべてが機能するように見えました。ある時点で、my_script.js を別のスクリプトで上書きして、my_script.js の内容が異なるようにしました。

ただし、ブラウザで my_app をロードすると、古い my_script.js がロードされますが、もう存在しません。どうすれば解決できますか?ありがとう。

4

3 に答える 3

6

私はよく?v=00001ブラウザのキャッシュを強制的にクリアするために、または任意の定義番号を使用します。したがって、あなたの場合は次のようになります。

<script src="{% static 'my_app/my_script.js?v=00001' %}"></script>

または:

<script src="{% static 'my_app/my_script.js' %}?v=00001"></script>

次回スクリプトを変更するときは、数字を 00002 に増やします。もちろん、これを行う方法はたくさんありますが、私はまだこの方法を好みます。

于 2013-07-21T22:49:27.140 に答える
2

キャッシュ無効化の ?get= パラメータを追加できます。ファイルを読み取り、ファイルの内容のハッシュを get パラメータとして追加する {% statichash %} テンプレート タグを定義するのが好きです。これは似ており、ハッシュの代わりにファイルの変更時刻を使用しますが、考え方は同じです:

https://bitbucket.org/ad3w/django-sstatic/src/4401a4bc3058618dfc2eafaee6a23d287a99ede5/sstatic/templatetags/sstatic.py?at=default

于 2013-07-21T22:40:31.797 に答える
0

ブラウザを更新するコードを書くことで修正しました。このようにして、キャッシュから読み取る代わりに、常に最新の更新された静的ファイルを取得します。

これには3つの方法があります。

  1. ページを手動で更新する

ブラウザ Google Chrome または IE9 で Windows OS を使用し、ヒット (CTRL + F5)

  1. 特定の時間間隔でページを更新します (この例では、ブラウザーは 3 秒ごとに更新されます) <head>

    <meta http-equiv="refresh" content="3" >

    </head>

  2. ユーザーがボタンをクリックしたときにページを更新する

    <form>

    <INPUT TYPE="button" onClick="history.go(0)" VALUE="Refresh">

    </form>

于 2015-07-21T22:25:29.987 に答える