J'ai une QWebView dans mon application qui rend une page html stockée dans l'application en tant que Qresource. Cette page, cependant, nécessite des bibliothèques Javascript externes charnues telles que MathJax, que je voudrais inclure en tant que ressource en raison de sa taille. Mon problème est qu'il semble que QtWebkit ne cache pas ces fichiers comme ferait un navigateur normal, et chaque fois que j'actualise le widget, il télécharge MathJax à nouveau. Donc, ma question est la suivante: est-il possible de mettre en cache ces bibliothèques après la première fois qu'elles sont téléchargées, sans avoir recours à l'envoyer avec l'application en tant que ressource?Mise en cache de javascript externe pour un widget QtWebkit dans une application PyQt
Répondre
Vous devriez essayer si un simple téléchargement basé sur QtNetwork respecte le paramètre de cache ou non. Vérifiez également si les paramètres (QWebSettings) sont correctement définis. Dans tous les cas, vous devriez être en mesure d'injecter un gestionnaire QNetworkAccessManager personnalisé qui gère la mise en cache de votre bibliothèque JS personnalisée. Voir http://ariya.blogspot.com/2010/05/qnetworkaccessmanager-tracenet-speed.html et http://ariya.blogspot.com/2010/06/proxy-server-with-filtering-feature.html comme exemples et suivre à partir de là.
Pourriez-vous poster un code source? Une fois téléchargées, ces données resteront dans le dossier/tmp/pendant un certain temps. Vous pourriez probablement utiliser les données dans le dossier temporaire, je suppose que vous n'appliquez pas cette politique.
- 1. Mise en application externe
- 2. Widget personnalisé PyQt en C++
- 3. QtWebkit: application console
- 4. Comment implémenter MousePressEvent pour un widget Qt-Designer dans PyQt
- 5. Application de feuilles de style en pyqt
- 6. Mettre en cache le contenu HTML en stockant une variable javascript dans un fichier js externe?
- 7. packaging qtwebkit pour windows
- 8. PyQt widget ne montre
- 9. Comment approcher la mise en cache dans une application Web?
- 10. Mise en cache Django pour un blog
- 11. QtWebkit: Support pour la page javascript ouvre?
- 12. asp.net-mvc: mise en cache javascript
- 13. Interaction de base Widget avec PyQt
- 14. mise en cache des fichiers JavaScript
- 15. Mise en cache et évitement du contenu mis en cache
- 16. Obtenir les widgets d'une mise en page dans PyQT
- 17. PyQt: Appelez une application TrayMinimized
- 18. Moyens de mise en cache dans GWT
- 19. Mise au point sur un QDockWidget tabulé dans PyQt
- 20. PyQT: obtenir des enfants récursifs d'un widget
- 21. Empêcher flex de mettre en cache une ressource externe
- 22. rails mise en cache pour application.rb
- 23. Mise en cache ASP.NET pour une application Web avec plusieurs noms de domaine
- 24. Mise en cache et conversion pendant la mise en cache
- 25. Problème de mise en cache dans un cadre de frameset
- 26. Bibliothèques de mise en cache pour .NET
- 27. Mise en cache dans urllib2?
- 28. Suggestions pour la mise en cache un ensemble de données
- 29. Mise en cache de WebConfigurationManager.AppSettings?
- 30. PyQt: Obtenir la position de QGraphicsWidgets dans un QGraphicsGridLayout
Eh bien, le code est aussi clair que possible, le widget est défini comme celui-ci :: self.modelWebView = QtWebKit.QWebView (self.scrollAreaWidgetContents_2) et il charge un document html qui charge certains js externes L'utilisation des données dans/tmp/peut ne pas être une bonne idée puisque sur d'autres plates-formes (par exemple, Windows) les données peuvent se retrouver ailleurs. – fccoelho
désolé .. J'aurais dû dire le répertoire (temp), ou l'a dit d'une autre manière d'impliquer que je le voulais comme le dossier temporaire indépendamment du système d'exploitation. Parce que vous travaillez à partir de la classe de base, vous devrez redéfinir comment il fonctionne. Une façon de procéder consiste à transformer toutes vos pages Web en QWebElements avant d'y accéder. La première fois que vous chargez la page, vous pouvez extraire le script, l'enregistrer en tant qu'objet, puis réutiliser son contenu dans la mémoire, en insérant le script et l'emplacement local en tant qu'élément. –
Je voulais ajouter un deuxième commentaire depuis que j'ai manqué de caractères. Le processus est assez simple et vous pouvez le faire comme vous le voulez. Vous téléchargez la source du script et créez un objet avec son contenu, puis l'utilisez localement. C'est ce que je suggérerais. –