Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@KazuyaSeto

[Unity開発] ダウンロードデータ、AssetBundle、などのキャッシュ問題切り分けまとめ

概要

最新のサーバーを使用するスマホアプリを開発していてデータが落ちてこねえ、ということありませんか?
僕は最近ありました、アセットバンドルを暗号化していたためキャッシュされたアセットバンドルをダウンロードしたときに壊れている扱いになって何が何だかな状態に。
作成時の不具合なのかまず検討したため原因究明に時間がかかったものの結局キャッシュかよという切ない状況になりました。
ということでデータをダウンロードする場合はデータが悪い場合もありますがキャッシュが原因の場合もあるので開発者は知識として知っておいたほうがいいと思いまとめました。
WWWクラスなどでアセットバンドルや画像データをダウンロードした時に最新のデータではなく古いデータになっていることがあります。
この問題はアプリ側(OS)側のキャッシュとサーバー側のキャッシュの可能性があります。

アプリ側のキャッシュ

アプリ側のキャッシュはWWWクラス(新しい方のAPIはちょっとわからないです)がOSのAPIしているためにダウンロードデータをキャッシュしているために起こります、Unityのキャッシュとは別なので注意が必要です。
回避策としては以下の公式リンクを参考にしてください。

https://helpdesk.unity3d.co.jp/hc/ja/articles/204488864-WWW-がキャッシュされるのを防ぐ
https://qiita.com/tempura/items/75a429507c6d32bf8f46

サーバ側のキャッシュ

サーバー側のキャッシュはサーバークライアント型のアプリを開発している場合は注意してください。
Webの開発でもよく起きているらしく、ファイルの更新が検出できないような構成だと起こるらしいです。
回避策としてはwebサーバの設定ファイルでキャッシュしないような設定にして
webサーバーを立ち上げ直す必要があるみたいです。

https://qiita.com/sugiii8/items/233e88aa26f00b290f38
https://qiita.com/itsumoonazicode/items/ad5c8017e9285868547e

まとめ

意外とアプリ開発をしていてサーバのキャッシュの問題であった場合は検索してもうまくヒットせず調べることが難しかったです。
データダウンロードを行うようなアプリを開発するときはキャッシュが問題になる場合があるの知っていれば問題が起きた時に原因特定の時間が短縮できるはずです。
同じ問題当たってしまった人の役に立てればと嬉しいです。
何か間違いがあればコメントください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?