8 Stimmen

Ermöglicht PHP das Lesen von .css- und .js-Dateien unter Beibehaltung ihres ursprünglichen Content-Typs

Ich möchte apache php5 in einer Weise konfigurieren, die

  1. .css und .js Dateien werden von php inspiziert
  2. ihr Inhaltstyp wird als Standard beibehalten (d.h. "text/css" und "application/x-javascript")

Ich brauche dies, weil sowohl CSS- als auch JS-Dateien globale PHP-Vars verwenden. Dies ermöglicht es mir, von einer einzigen PHP-Datei zu steuern sowohl CSS und JS-Code dynamisch (dann das Projekt exportiert wird, so dass CSS und JS-Dateien enthalten die tatsächlichen Werte und nicht die PHP-Echos).

Die Art und Weise, die ich gerade tue, ist, dass ich die Erweiterung .css und .js zu apache php5.conf hinzugefügt habe:

AddType application/x-httpd-php .php .phtml .php3 .css .js

Ich verwende auch header('Content-Type: [...]') am Anfang jeder css/js-Datei, um den Content-Type-Header-Wert wieder auf das Original zu ändern. Dies ist nicht ideal, da ich diese Zeile manuell zu jeder css/js-Datei hinzufügen muss, damit der Content-Type-Header angemessen ist, auch wenn ich die globalen PHP-Vars nicht verwende.

So irgendwie kann ich machen PHP inspizieren css/js-Dateien unter Beibehaltung ihrer ursprünglichen Content-Type ohne die tatsächlichen css/js-Dateien selbst zu ändern?

7voto

unbeli Punkte 28027

Ich habe das nicht ausprobiert, aber aus den Unterlagen geht hervor, dass es möglich ist:

<Files *.css>
    php_value  default_mimetype "text/css"
</Files>
<Files *.js>
    php_value  default_mimetype "application/x-javascript"
</Files>
# ... and so on for other types

2voto

Igor Zinov'yev Punkte 3586

Wenn ich das unbedingt tun müsste, hätte ich eine spezielle Ansicht für CSS- und JavaScript-Dateien erstellt. Zum Beispiel würde ich meine Anwendung anweisen, alle Anfragen an, sagen wir, /pseudostatic/css/somefilename.js durch einen bestimmten Controller, der eine Vorlage auf der Grundlage des Namens einer angeforderten Datei nimmt, ihr alle benötigten globalen Variablen voranstellt und sie mit einer benötigten Kopfzeile ausliefert.

Und ich würde die Zwischenspeicherung auf der Grundlage des Zeitstempels der Datei verwenden.

Aber ich denke, das ist wirklich eine unnötige Qual. Ich wette, Sie können einen Weg finden, wie Sie die meisten Ihrer CSS und Javascript in statischen Dateien zu halten und laden Sie nur ein winziges Stück der Server-seitig generierten Skripte und Stile direkt in der angeforderten Seite. Auf diese Weise sparen Sie Ihrem Server eine Menge Rechenzeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X