Ich habe eine ReactJS basierte Anwendung auf AWS S3 Eimer eingesetzt. Außerdem musste ich CloudFront aufgrund von Problemen mit dem Router verwenden, siehe S3 Static Website Hosting Route All Paths to Index.html. Nun, mit CloudFront muss ich die Verteilung neu erstellen, wenn ich Endpunkte (z. B. API-Host, Callback-URL usw.) ändern, ist das so, wie es funktioniert?Bereitstellen reactjs basierte Anwendung auf AWS
Antwort
Nein, Sie müssen nicht Cloudfront Verteilung neu erstellen.
Eine gängige Praxis ist, einen Hash zu dem statischen Vermögenswert anzuhängen, zB:
<script src="myapp.bundle.js?v=12345678"></script>
Der Hash ist in der Regel die MD5/SHA1-Hash der Datei. Einige verwenden möglicherweise den Zeitstempel der Zeit, in der Sie den Code erstellen. Nachdem Sie den Dateiinhalt aktualisiert und eine neue Bereitstellung vorgenommen haben, sollte daher ein neuer Hash verwendet werden. Betrachten Sie die folgende Strömung als Client:
- Ein Client-Anfragen für
myapp.bundle.js?v=1
- Cache existiert noch nicht, Proxies Cloudfront die Anforderung an S3 direkt und speichert den Inhalt.
- Cloudfront liefert zwischengespeicherten Inhalt für alle nachfolgenden Anforderungen an
myapp.bundle.js?v=1
. - Jetzt haben Sie Ihren Code aktualisiert und auf S3 bereitgestellt (mit einem neuen Hash in Ihrer index.html).
- Clients fordern jetzt
myapp.bundle.js?v=2
statt - wiederholen 2-3 und so weiter
Das Hash Anfügen in der Regel von Build-Tool wie gulp und webpack mit Plugins erfolgt.
Zu dieser Lösung komplett zu machen, erstellen reagieren-App HtmlWebpackPlugin verwendet Script-Tag in die Datei index.html zu injizieren.
new HtmlWebpackPlugin({
inject: true,
template: paths.appHtml,
minify: {
removeComments: true,
collapseWhitespace: true,
removeRedundantAttributes: true,
useShortDoctype: true,
removeEmptyAttributes: true,
removeStyleLinkTypeAttributes: true,
keepClosingSlash: true,
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
},
hash:true
}),
Um die Details zu sehen, finden Sie in der Dokumentation https://github.com/jantimon/html-webpack-plugin#configuration: Um einen Hash, die node_modules ändern \ reagieren-Scripts \ config \ webpack.config.prod.js wie unten (true Zeile hinzugefügt Hash) anhängen
Nein, Sie müssen so etwas nicht zur Create React App hinzufügen. Es fügt bereits den Hash hinzu. –
CRA verwendet Webpack intern. –
der beste Weg, derjenige sein würde, der https://medium.com/@omgwtfmarc/if-youre-not-already-doing-this-creating-an-invalidation-for-cloudfront-will-dramatically-speed-7080357c9e8d hier geschrieben
Nur Ungültigkeits hinzufügen für /index.html
- 1. Bereitstellen des ReactJS-Projekts in AWS EC2
- 2. Bereitstellen von Java SE-Anwendung auf AWS
- 3. tomcat basierte Anwendung Heroku Fehler bereitstellen
- 4. Bereitstellen von Wiedergabe 2.1-snapshot-basierte Anwendung auf Heroku
- 5. Bereitstellen von Android auf AWS
- 6. Hubot auf AWS Lambda bereitstellen?
- 7. Bereitstellen von Web App auf AWS
- 8. Kann ich meine ReactJS App auf einem regulären Host bereitstellen?
- 9. Angular2-Anwendung auf Firebase bereitstellen
- 10. Laravel - Anwendung auf Heroku bereitstellen
- 11. AWS: Ausführen eines Skripts beim Bereitstellen der Anwendung?
- 12. Bereitstellen von Springboot-Glas auf AWS
- 13. Bereitstellen Meteor 1.3, Reaktion App auf AWS
- 14. Flask-App auf AWS EC2 bereitstellen
- 15. Bereitstellen django Projekt auf AWS Elastic Bohnenstengel
- 16. Bereitstellen einer eckigen App auf aws cloudfront
- 17. Bereitstellen der Codeigniter-App auf Amazon AWS
- 18. Anwendung mit Jenkinsfile und AWS-Code bereitstellen deploy
- 19. Django-Anwendung in AWS bereitstellen. Raise Disidowned Host exception
- 20. Wie man eine EJB-basierte Anwendung auf Tomcat implementiert
- 21. Bereitstellen von Django Mit AWS
- 22. MFC-Container-basierte Anwendung
- 23. iPad Navigation Basierte Anwendung
- 24. Bereitstellen von Python-Anwendung
- 25. XBAP-Anwendung bereitstellen?
- 26. Best Practice: Erlang Anwendung bereitstellen auf Windows
- 27. Bereitstellen von jhipster-Anwendung auf Digital Ocean
- 28. Bereitstellen von GWT-Anwendung auf Godaddy
- 29. Bereitstellen von GWT-Anwendung auf Apache Tomcat
- 30. Bereitstellen Kolben site/Anwendung auf pythonanywhere.com
Diese tatsächlich Sinn macht, würde Ich mag, um zu versuchen. Ich habe create-react-app verwendet, weißt du, welche Änderungen ich machen muss, um die Bundle-Version zu haben? – nomadus
Ich glaube, es so für Sie tut schon https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/config/webpack.config.prod.js#L74 –
Ich überprüfte Es fügt einen Hash-Code in die js-Dateien ein, aber ich sehe nicht, dass sich der Hash-Wert ändert. – nomadus