Il existe un bug connu dans webkit selon lequel lorsque vous supprimez une image du DOM, la mémoire associée à celle-ci n'est pas libérée.
Ceci pose problème pour les applications monopage qui chargent souvent des images.
Diverses solutions suggérées sont les suivantes :
- Supprimer l'attribut src de l'image avant de supprimer l'image du DOM
- Définir src de l'image à " " avant de supprimer l'image du DOM
- Définir l'image sur une image d'un pixel avant de supprimer l'image du DOM
- Créer un nombre limité d'éléments image et les recycler
Les 3 premières méthodes ne fonctionnent pas pour moi. Le principal inconvénient de recycler les éléments image est qu'il faut écrire beaucoup de code pour les gérer. Je charge un nouveau HTML via AJAX qui peut contenir des images, je ne connais donc pas nécessairement le nombre d'images qui seront chargées.
Existe-t-il d'autres solutions de contournement pour résoudre ce problème ?
2 votes
Je ne pense pas qu'un pool d'images nécessiterait autant de code ; et il peut facilement supporter un nombre arbitraire d'images.
0 votes
Et quel est le problème de supprimer l'attribut
src
?0 votes
Selon la bibliothèque que vous utilisez (et si vous en utilisez une), vous pourriez envelopper la fonction de suppression du nœud pour gérer ce cas particulier en supprimant d'abord
src
avant de supprimer l'image elle-même.0 votes
Je viens de mettre à jour ma question - supprimer l'attribut src ne fonctionne pas pour moi.
1 votes
Comment pouvez-vous ne pas connaître le nombre d'images si vous appelez manuellement le constructeur Image() pour chaque image (la cause du bug lié). Je ne pense pas que les problèmes d'injection de HTML avec des balises img soient couverts par ce bug.
0 votes
J'ai constaté que le fait de définir src sur "" après avoir supprimé l'image du DOM empêche les fuites de mémoire, alors que le faire auparavant ne le fait pas.