Etherpad-lite: Symbolleistensymbole werden nach der Aktualisierung (1.6.2 -> 1.8.3) nicht angezeigt, wenn Sie in einem Unterverzeichnis über einen Reverse-Proxy verfügbar machen und minify = true

Erstellt am 28. Apr. 2020  ·  110Kommentare  ·  Quelle: ether/etherpad-lite

image

Die Symbole in der Symbolleiste werden nicht angezeigt und es fehlen Fehler in der Schriftfamilie, aber sie befinden sich alle in ihren Ordnern. Es wurde nichts geändert. Können Sie mir helfen, dieses Problem zu beheben?

BEKOMMEN/static/font/Roboto-Regular.ttf net :: ERR_ABORTED 404 (nicht gefunden)

Ich bekomme das für alle Schriftfamilien.

Bug Special case Bug UI express server

Hilfreichster Kommentar

Hatte genau das gleiche Problem.

Ich verwende einen Reverse-Proxy und die Etherpad-Instanz befindet sich in einem Unterverzeichnis (/ etherpad). Ich habe es richtig gemacht und meiner Apache-Konfiguration Folgendes hinzugefügt.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font
    ProxyPassReverse http://localhost:9001/static/font
</Location>

Ich habe nichts in settings.json geändert.

Alle 110 Kommentare

Bitte machen Sie Angaben.

Laufen Sie hinter Reverse Proxy?
Laufen Sie im Entwicklungs- oder Produktionsmodus?
Minimiert?
Gesicherte Kopie oder Ihre settings.json
Usw.

https://mclear.co.uk/2015/01/15/how-to-write-a-bug-report/

Es wird im Entwicklungsmodus ausgeführt, obwohl der systemd-Dienst "Environment = NODE_ENV = Production" enthält, kein Reverse-Proxy, das CSS wird minimiert, settings.json wird kaum berührt (nur MySQL und Admin Pw werden geändert).

Es sieht so aus, als ob Etherpad nicht alle Schriftarten laden kann, weil es so aussieht/static/font/*.ttf statt/ etherpad / src / static / font /

Versuchen Sie, in settings.json minify auf false und maxage auf 0 zu setzen

Ich habe nichts geändert

An meinem Laptop kann jetzt vielleicht mehr helfen. Am nützlichsten ist es, Ihre settings.json abzurufen (aber alle Passwörter zu entfernen). Können Sie das bitte zur Verfügung stellen?

FWIW Ich habe 1.6. *> 1.8.3 getestet und dies nicht erlebt, aber es könnte mit Ihren Einstellungen zusammenhängen.

Wenn Sie keine Einstellungen vornehmen möchten, müssen Sie Folgendes tun:

cp settings.json settings.backup.json
cp settings.json.template settings.json
Kopieren Sie dann Ihren Datenbankhost / Benutzer / Pass von settings.backup.json nach settings.json

Starten Sie neu und prüfen Sie, ob es behoben ist.

/*
  This file must be valid JSON. But comments are allowed

  Please edit settings.json, not settings.json.template

  To still commit settings without credentials you can
  store any credential settings in credentials.json
*/
{
  // Name your instance!
  "title": "HelpMe-Etherpad",

  // favicon default name
  // alternatively, set up a fully specified Url to your own favicon
  "favicon": "favicon.ico",

  //IP and port which etherpad should bind at
  "ip": "0.0.0.0",
  "port" : 9001,

  // Option to hide/show the settings.json in admin page, default option is set to true
  "showSettingsInAdminPage" : true,

  /*
  // Node native SSL support
  // this is disabled by default
  //
  // make sure to have the minimum and correct file access permissions set
  // so that the Etherpad server can access them

  "ssl" : {
            "key"  : "/path-to-your/epl-server.key",
            "cert" : "/path-to-your/epl-server.crt",
            "ca": ["/path-to-your/epl-intermediate-cert1.crt", "/path-to-your/epl-intermediate-cert2.crt"]
          },

  */

  //The Type of the database. You can choose between dirty, postgres, sqlite and mysql
  //You shouldn't use "dirty" for for anything else than testing or development
  /*"dbType" : "dirty",
  //the database specific settings
  "dbSettings" : {
                   "filename" : "var/dirty.db"
                 },

   An Example of MySQL Configuration*/
   "dbType" : "mysql",
   "dbSettings" : {
                    "user"    : "etherpad",
                    "host"    : "localhost",
                    "password": "",
                    "database": "etherpad",
                    "charset" : "utf8mb4"
                  },
   "users": {
    "admin": {
        "password": "",
        "is_admin": true
        }
            },

  //the default text of a pad
  "defaultPadText" : "Willkommen zum CN-Etherpad!\n\nDieses Dokument wird beim Tippen laufend aktualisiert, sodass jeder immer denselben Text sieht. So kann man nahtlos zusammen an Dokumenten arbeiten.\n",

  /* Default Pad behavior, users can override by changing */
  "padOptions": {
    "noColors": false,
    "showControls": true,
    "showChat": true,
    "showLineNumbers": true,
    "useMonospaceFont": false,
    "userName": false,
    "userColor": false,
    "rtl": false,
    "alwaysShowChat": false,
    "chatAndUsers": false,
    "lang": "de-de"
  },

  /* Should we suppress errors from being visible in the default Pad Text? */
  "suppressErrorsInPadText" : false,

  /* Users must have a session to access pads. This effectively allows only group pads to be accessed. */
  "requireSession" : false,

  /* Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. */
  "editOnly" : false,

  /* Users, who have a valid session, automatically get granted access to password protected pads */
  "sessionNoPassword" : false,

  /* if true, all css & js will be minified before sending to the client. This will improve the loading performance massivly,
     but makes it impossible to debug the javascript/css */
  "minify" : false,

  /* How long may clients use served javascript code (in seconds)? Without versioning this
     may cause problems during deployment. Set to 0 to disable caching */
  "maxAge" : 21600, // 60 * 60 * 6 = 6 hours

  /* This is the absolute path to the Abiword executable. Setting it to null, disables abiword.
     Abiword is needed to advanced import/export features of pads*/
  "abiword" : "/usr/local/bin/abiword",

  /* This is the absolute path to the soffice executable. Setting it to null, disables LibreOffice exporting.
     LibreOffice can be used in lieu of Abiword to export pads */
  "soffice" : null,

  /* This is the path to the Tidy executable. Setting it to null, disables Tidy.
     Tidy is used to improve the quality of exported pads*/
  "tidyHtml" : "/usr/bin/tidy",

  /* Allow import of file types other than the supported types: txt, doc, docx, rtf, odt, html & htm */
  "allowUnknownFileEnds" : true,

  /* This setting is used if you require authentication of all users.
     Note: /admin always requires authentication. */
  "requireAuthentication" : false,

  /* Require authorization by a module, or a user with is_admin set, see below. */
  "requireAuthorization" : false,

  /*when you use NginX or another proxy/ load-balancer set this to true*/
  "trustProxy" : false,

  /* Privacy: disable IP logging */
  "disableIPlogging" : false,

  /* Users for basic authentication. is_admin = true gives access to /admin.
     If you do not uncomment this, /admin will not be available! */


  // restrict socket.io transport methods
  "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],

  // Allow Load Testing tools to hit the Etherpad Instance.  Warning this will disable security on the instance.
  "loadTest": false,

  // Disable indentation on new line when previous line ends with some special chars (':', '[', '(', '{')
  /*
  "indentationOnNewLine": false,
  */

  /* The toolbar buttons configuration.
  "toolbar": {
    "left": [
      ["bold", "italic", "underline", "strikethrough"],
      ["orderedlist", "unorderedlist", "indent", "outdent"],
      ["undo", "redo"],
      ["clearauthorship"]
    ],
    "right": [
      ["importexport", "timeslider", "savedrevision"],
      ["settings", "embed"],
      ["showusers"]
    ],
    "timeslider": [
      ["timeslider_export", "timeslider_returnToPad"]
    ]
  },
*/
  /* The log level we are using, can be: DEBUG, INFO, WARN, ERROR */
  "loglevel": "INFO",

  //Logging configuration. See log4js documentation for further information
  // https://github.com/nomiddlename/log4js-node
  // You can add as many appenders as you want here:
  "logconfig" :
    { "appenders": [
        { "type": "console"
        //, "category": "access"// only logs pad access
        }
    /*
      , { "type": "file"
      , "filename": "your-log-file-here.log"
      , "maxLogSize": 1024
      , "backups": 3 // how many log files there're gonna be at max
      //, "category": "test" // only log a specific category
        }*/
    /*
      , { "type": "logLevelFilter"
        , "level": "warn" // filters out all log messages that have a lower level than "error"
        , "appender":
          {  Use whatever appender you want here  }
        }*/
    /*
      , { "type": "logLevelFilter"
        , "level": "error" // filters out all log messages that have a lower level than "error"
        , "appender":
          { "type": "smtp"
          , "subject": "An error occurred in your EPL instance!"
          , "recipients": "[email protected], [email protected]"
          , "sendInterval": 300 // 60 * 5 = 5 minutes -- will buffer log messages; set to 0 to send a mail for every message
          , "transport": "SMTP", "SMTP": { // see https://github.com/andris9/Nodemailer#possible-transport-methods
              "host": "smtp.example.com", "port": 465,
              "secureConnection": true,
              "auth": {
                  "user": "[email protected]",
                  "pass": "bar_foo"
              }
            }
          }
        }*/
      ]
    }
}

Okay cool, gib mir 2 Minuten.

Nein, das wurde nicht repliziert. Für mich gibt es Symbolleistenschaltflächen.

Ist diese Instanz öffentlich, auf die ich zugreifen kann? Bitte senden Sie mir eine E-Mail an die URL

Dumme Frage .. Hast du

  • [x] Browser-Cache löschen?
  • [x] Versuch, mit bin/run.sh zu laufen

Vielen Dank!

Leider ist es keine öffentliche Instanz.
Ich habe die settings.json durch die neue Vorlage ersetzt und auch Skin in No-Skin geändert. Immer noch kein Erfolg ..
Und ja, ich habe run.sh ausgeführt, den Dienst neu gestartet und das Geld gelöscht :)

Dies ist übrigens der systemd-Dienst:
[Einheit]
Beschreibung = Etherpad
Nach = syslog.target network.target

[Bedienung]
Typ = einfach
Benutzer = Etherpad
Gruppe = Etherpad
Arbeitsverzeichnis = / opt / etherpad
Umgebung = NODE_ENV = Produktion
ExecStart = / opt / etherpad / bin / run.sh.
Neustart = immer

[Installieren]
WantedBy = multi-user.target

Wie haben Sie installiert? Hast du git clone oder hast du dir die veröffentlichte .zip geholt und entpackt?

URL anfordern: https://dev.com:9001/static/font/RobotoMono-Regular.ttf

jose<strong i="7">@server</strong>:~/develop$ locate RobotoMono | grep develop | grep Reg
/home/jose/develop/src/static/font/RobotoMono-Regular.ttf

Für mich sieht alles gut aus.

Ich habe es per Git-Klon installiert oder vielmehr aktualisiert. Ich glaube, es wurde vor ein paar Jahren (von einem anderen Administrator) durch Zip Unpack installiert. Ich habe rsync verwendet, um alles zu aktualisieren

Ah, ich frage mich, ob der letzte Administrator ein paar Hacks gemacht hat? Wenn Sie git status sehen, sehen Sie geänderte Dateien?

Was passiert, wenn Sie ein neues Repo klonen und dann Ihre settings.json kopieren? Das wird funktionieren, behebt aber offensichtlich nicht das Problem, dass etwas seltsam ist.

Ich werde das jetzt tun. Ja, es ist sehr seltsam. Als ob der Stammordner für die Schriftarten nicht mit dem Etherpad identisch wäre

Der Code ist übrigens richtig. src / ist der Stammordner ..

Ich denke, der vorherige Administrator hat etwas gehackt, ich kann nicht sagen, was, ohne einen Git-Unterschied zu sehen. Können wir das jetzt schließen?

Der vorherige Administrator hat git nicht verwendet (wurde nicht installiert) und funktioniert nach dem sauberen Klonen immer noch nicht.

@skramsa lulwut. Klon komplett bereinigen und ausführen und es funktioniert nicht? :! Ich habe das Gefühl, dass etwas mit Ihrem Setup nicht stimmt. Irgendwelche Fehler oder Warnungen im Protokoll?

Was ist, wenn Sie einen vollständig sauberen Klon erstellen und keine Einstellungen ändern? Scheitert es dann noch?

Gibt es eine Möglichkeit, das Debuggen vorübergehend für mich öffentlich zu machen?

Nein, es befindet sich in einem gesicherten Intranet. Könnte das Upgrade von Knoten 6 auf 12 etwas damit zu tun haben?

Nicht sicher .. Ich bin nicht wirklich sicher, andere Debug-Schritte hier ..

Der einzige Hinweis, den ich habe, ist ..
https://github.com/ether/etherpad-lite/blob/develop/src/node/utils/Minify.js#L429

Aber Sie sagten, Sie hätten den gesamten Cache gesäubert und einen sauberen Lauf durchgeführt.

Sie haben die Minimierung deaktiviert. Hat rm -Rf src/node_modules && rm src/package-lock.json dann bin/run.sh ? Ja? Ich meine, du hast so einen sauberen Klon gemacht;

Was sind Ihre git sha , npm --version und nodejs version Werte bitte?

npm ist 6.14.4 und Node -v ist 12.16.2. dumme frage, aber was genau meinst du mit "meinem" git sha?

Ich habe erneut auf 1.6.2 gerollt und minify auf false gesetzt und plötzlich funktioniert es wieder (vorher funktionierten nicht einmal die Symbole der alten Version). Das ist eine Erleichterung. Ich werde versuchen, nächste Woche ein weiteres sauberes Setup mit diesen Einstellungen vorzunehmen. Vielleicht funktioniert es diesmal: D Vielen Dank für Ihre Hilfe!

Geben Sie in Ihrem Etherpad-Ordner git rev-parse HEAD

Ich möchte sehen, auf welchem ​​Commit du bist.

Hallo
Ich habe genau das gleiche Problem, außer dass ich hinter einem Proxy stehe.
Ich habe einen Test durchgeführt, indem ich meine Installation gespeichert und das Repository geklont habe. Dann habe ich einfach meine Konfigurationsdatei kopiert und den Dienst neu gestartet.
Ich habe trotz der Neuinstallation immer noch das gleiche Problem.

Aber :
Andererseits ist es interessant, wenn ich ohne Verwendung des Proxys und ohne https auf den Dienst zugreife, kein Problem, die Symbole werden korrekt angezeigt !!

Die Apache-Proxy-Konfiguration stammt aus der Dokumentation, nichts Exotisches auf meiner Seite.

Hatte genau das gleiche Problem.

Ich verwende einen Reverse-Proxy und die Etherpad-Instanz befindet sich in einem Unterverzeichnis (/ etherpad). Ich habe es richtig gemacht und meiner Apache-Konfiguration Folgendes hinzugefügt.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font
    ProxyPassReverse http://localhost:9001/static/font
</Location>

Ich habe nichts in settings.json geändert.

@skramsa hat keinen Reverse Proxy erwähnt, also glaube ich nicht, dass es verwandt ist? Skramsa, bitte bestätigen Sie, dass Ihr Setup keinen Reverse-Proxy enthält.

Hatte genau das gleiche Problem.

Ich verwende einen Reverse-Proxy und die Etherpad-Instanz befindet sich in einem Unterverzeichnis (/ etherpad). Ich habe es richtig gemacht und meiner Apache-Konfiguration Folgendes hinzugefügt.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font retry=0 timeout=30
    ProxyPassReverse http://localhost:9001/static/font
</Location>

Ich habe nichts in settings.json geändert.

Warum die Wiederholungs- und Zeitüberschreitungsregel?

@skramsa hat keinen Reverse Proxy erwähnt, also glaube ich nicht, dass es verwandt ist? Skramsa, bitte bestätigen Sie, dass Ihr Setup keinen Reverse-Proxy enthält.

Ja, aber @julpec steht hinter einem Proxy, also

Hatte genau das gleiche Problem.
Ich verwende einen Reverse-Proxy und die Etherpad-Instanz befindet sich in einem Unterverzeichnis (/ etherpad). Ich habe es richtig gemacht und meiner Apache-Konfiguration Folgendes hinzugefügt.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font retry=0 timeout=30
    ProxyPassReverse http://localhost:9001/static/font
</Location>

Ich habe nichts in settings.json geändert.

Warum die Wiederholungs- und Zeitüberschreitungsregel?

Du hast recht, ich glaube nicht, dass es nötig ist, ich habe das gestern nach dem Update in Eile gemacht;)

@skramsa hat keinen Reverse Proxy erwähnt, also glaube ich nicht, dass es verwandt ist? Skramsa, bitte bestätigen Sie, dass Ihr Setup keinen Reverse-Proxy enthält.

Ja, aber @julpec steht hinter einem Proxy, also

Es ist danke

Als eine Erinnerung :

Andererseits ist es interessant, wenn ich ohne Verwendung des Proxys und ohne https auf den Dienst zugreife, kein Problem, die Symbole werden korrekt angezeigt !!

In meinem Fall ist es offensichtlich, dass es sich um einen Proxy handelt.

Außerdem bin ich in einer Migrationssituation meiner Etherpad-Instanz und habe meine Datenbank migriert und danach Etherpad aktualisiert. Ich habe dies jetzt in den Protokollen veröffentlicht:

[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads

Ich weiß nicht, ob es Fehler verursachen kann ...

Als eine Erinnerung :

Andererseits ist es interessant, wenn ich ohne Verwendung des Proxys und ohne https auf den Dienst zugreife, kein Problem, die Symbole werden korrekt angezeigt !!

In meinem Fall ist es offensichtlich, dass es sich um einen Proxy handelt.

Außerdem bin ich in einer Migrationssituation meiner Etherpad-Instanz und habe meine Datenbank migriert und danach Etherpad aktualisiert. Ich habe dies jetzt in den Protokollen veröffentlicht:

[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads
Ich weiß nicht, ob es Fehler verursachen kann ...

Erstellen Sie dazu bitte ein separates Problem. Es muss angesprochen werden.

Ich habe das gleiche Problem.
Ich bin hinter einem Reverse-Proxy (Apache) und verwende den (derzeit) neuesten Docker-Container (habe das Image vor einer Minute gezogen):

$ docker image ls
REPOSITORY           TAG            IMAGE ID            CREATED             SIZE
etherpad/etherpad    latest         878d71df1b8e        44 hours ago        273MB

Die Symbolleiste sieht genauso aus wie im Originalbericht. Etherpad wird unter /pad/ als Proxy angezeigt, aber die Schriftarten werden von /static/ geladen, was zu 404 Fehlern führt.

Ich möchte die Problemumgehung von /static/ ein sehr häufiger Pfad ist, der auch von anderen Anwendungen verwendet wird.

Okay, werde so schnell wie möglich sortieren. Sollte heute sein, könnte aber diese Woche nicht zusammengeführt werden, also müsst ihr vielleicht einen Patch anwenden.

Nach der Veröffentlichungswoche versuchen wir alle, Zeit mit der Familie usw. zu verbringen.

Ich kann dies nicht mit meiner Apache-Konfiguration replizieren. Kann jemand eine beleidigende Apache-Konfiguration einfügen?

Auch Nginx mit der Wiki-Konfiguration getestet und kann dort nicht replizieren; /

image

image

Lässt mich denken, dass ihr alle eine seltsame Apache-Fehlkonfiguration / Eigenart erlebt. Woher haben Sie alle Ihre Apache-Subdir-Konfiguration? Wir bieten keine im Wiki afaik an, also denke ich, dass ihr vielleicht Schurke geworden seid? : P.

PS Ich teste gegen die Entwicklung, die so ziemlich Release atm ist und die Nginx-Konfiguration lautet:

server {
        listen       80;
        server_name  pad.example.com;

        access_log  /var/log/nginx/eplite.access.log;
        error_log   /var/log/nginx/eplite.error.log;

    location /pad {
        rewrite                /pad/(.*) /$1 break;
        rewrite                ^/pad$ /pad/ permanent;
        proxy_pass             http://localhost:9001/;
        proxy_pass_header Server;
        proxy_redirect         / /pad/;
        proxy_set_header       Host $host;
        proxy_buffering off;
    }

    location /pad/socket.io {
        rewrite /pad/socket.io/(.*) /socket.io/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_redirect         / /pad/;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
        proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_set_header Host $host;  # pass the host header
        proxy_http_version 1.1;  # recommended with keepalive connections
        # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    location /static {
        rewrite /static/(.*) /static/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_set_header Host $host;
        proxy_buffering off;
    }

}

# we're in the http context here
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

Ich habe festgestellt, dass tests / frontend / index.html fehlschlägt, was seltsam erscheint

Ich habe auch /pad/foo/p/blah ausprobiert, um zu bestätigen, dass es keinen Fehler auf der Etherpad-Seite gibt und die Dinge gut aussehen ...

Ich kann dies nicht mit meiner Apache-Konfiguration replizieren. Kann jemand eine beleidigende Apache-Konfiguration einfügen?

Hier ist mein:

<Location /pad/>
    Order allow,deny
    Allow from all
    Options All +MultiViews -ExecCGI
    AuthType Basic
    AuthName "authentification"
    AuthBasicProvider       ldap
    AuthLDAPURL "ldap://127.0.0.1:389/ou=****,dc=****,dc=****,dc=org"
    AuthLDAPGroupAttribute memberUid
    AuthLDAPGroupAttributeIsDN off
    require ldap-group cn=****,ou=***,dc=*****,dc=****,dc=org

    ProxyPass http://localhost:9002/ 
    ProxyPassReverse http://localhost:9002/
    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
    RewriteRule . - [E=RU:%1]
    RequestHeader add X-Forwarded-User %{RU}e
</Location>

Super danke gimme eine Stunde wird es heute Abend versuchen.

Lässt mich denken, dass ihr alle eine seltsame Apache-Fehlkonfiguration / Eigenart erlebt. Woher haben Sie alle Ihre Apache-Subdir-Konfiguration? Wir bieten keine im Wiki afaik an, also denke ich, dass ihr vielleicht Schurke geworden seid? : P.

Hier

Lässt mich denken, dass ihr alle eine seltsame Apache-Fehlkonfiguration / Eigenart erlebt. Woher haben Sie alle Ihre Apache-Subdir-Konfiguration? Wir bieten keine im Wiki afaik an, also denke ich, dass ihr vielleicht Schurke geworden seid? : P.

Hier

Ich habe dort nachgesehen und in den Beispielen geht es nicht darum, Etherpad in ein Unterverzeichnis für Apache zu setzen ...

image

Verwenden einer leicht modifizierten Version Ihres Snips

<VirtualHost *:81>
<Location /pad/>
    Order allow,deny
    Allow from all
    Options All +MultiViews -ExecCGI
    ProxyPass http://localhost:9001/
    ProxyPassReverse http://localhost:9001/
    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
    RewriteRule . - [E=RU:%1]
</Location>
</VirtualHost>

image

jose<strong i="5">@server</strong>:~/develop$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2020-03-13T12:26:16

Ich habe dort nachgesehen und in den Beispielen geht es nicht darum, Etherpad in ein Unterverzeichnis für Apache zu setzen ...

es macht keinen Sinn. Sie können alles, was Sie wollen, in das Standort-Tag einfügen. Aber ich werde es jetzt mit Ihrer Konfiguration und ohne "Unterverzeichnis" versuchen.
Vielen Dank für Ihre Untersuchungen übrigens

es macht keinen Sinn. Sie können alles, was Sie wollen, in das Standort-Tag einfügen. Aber ich werde es jetzt mit Ihrer Konfiguration und ohne "Unterverzeichnis" versuchen.

es macht keinen Sinn ... in meinem Gehirn. Aber in der realen Welt ist es das, was das Problem verursacht!
Guter Punkt: +1:
Ich verstehe jedoch nicht, warum vorher alles so gut funktioniert hat, es läuft seit Jahren hinter einem Reverse-Proxy mit dieser Konfiguration.
Ich brauche wirklich ein Unterverzeichnis, da hinter einem Apache "Single Sign-On" verschiedene Dienste ausgeführt werden.
Wäre es möglich, etwas anderes als "/" als Standort zu verwenden?

Vielen Dank, dass Sie an diesem Problem arbeiten

Kopiere / füge meine Konfiguration von oben ein, ich benutze einen anderen Ort ...

Ich sehe keinen Unterschied zu meinen eigenen, außer bei den Authentifizierungseinstellungen.
Ich werde es gleich versuchen

Kopiere / füge meine Konfiguration von oben ein, ich benutze einen anderen Ort ...

immer noch das gleiche Problem: keine Anzeige von Symbolen

Apache-Version?

Serverversion: Apache / 2.4.38 (Debian)
Server erstellt: 2019-10-15T19: 53: 42

Ich habe mit dem Elementinspektor nachgeforscht und er gibt mir Folgendes als URL für die Schriftarten:

Request URL: https://example.org/static/font/RobotoMono-Regular.ttf

Es sollte sein:

Request URL: https://example.org/pad/static/font/RobotoMono-Regular.ttf

Ich kann nicht verstehen, warum ich das Unterverzeichnis "pad" nicht habe.

Also habe ich auf einem neuen Host von vorne angefangen.

docker run --name etherpad -d \
    -e NODE_ENV=production -p 9001:9001 \
    --mount type=bind,src=/etc/localtime,dst=/etc/localtime \
    --restart=unless-stopped \
    etherpad/etherpad

In der ursprünglichen Konfiguration hat sich nichts geändert.

Apache-Konfiguration:

<VirtualHost _default_:443>
    ServerName host
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass             /pad/     http://localhost:9001/
    ProxyPassReverse      /pad/     http://localhost:9001/
    SSLCertificateFile  /etc/apache2/ssl/host.example.com_cert_with_chain.pem
    SSLCertificateKeyFile /etc/apache2/ssl/host.example.com_sec_key.pem
    SSLCertificateChainFile /etc/apache2/ssl/chain.pem
</VirtualHost>

Die Apache-Version ist 2.4.29.

Löschte den Browser-Cache und das Ergebnis:

image

Seltsam. Ich werde versuchen, das Docker-Image lokal zu verwenden, um zu sehen, ob sich dadurch etwas ändert

@ JohnMcLear es ist wirklich unglaublich. Ich habe es mit genau der gleichen Konfiguration wie Sie an Port 81 in einem separaten vhost usw. versucht, und das Problem tritt immer noch auf.
Ich habe dafür gesorgt, dass der Cache jedes Mal geleert wird.

Hier sind meine Softwareversionen:

node: v10.20.1
npm: 6.14.4
apache2: Apache/2.4.38 (Debian)
etherpad: 1.8.3 (6210114)

Ich habe genau das gleiche Problem. Die Symbole fehlen, wenn sie über den Proxy (nginx) ausgeführt werden und minify auf true gesetzt ist. Sobald ich minify auf false gesetzt und mit clearRun.sh gestartet und den Browser-Cache geleert habe, funktionieren die Symbole. In der älteren Version, die wir seit einiger Zeit verwendeten, funktionierte es mit minify: true und dieser Nginx-Konfiguration:

server {
        listen          80;
        listen          443 ssl;
        include snippets/mortis2-ssl.conf;
        server_name     mortis2;
        location /pad/
        {
                #proxy_pass        http://localhost:9001/;
                proxy_set_header  Host $host;
                proxy_buffering   off;
        }
}

Ich habe herausgefunden, dass es funktioniert, wenn ich die nginx-Konfiguration von @JohnMcLear verwende und rewrite verwende. Ich denke, dieses Problem tritt nur auf, wenn wir einen anderen Ort verwenden (wie / pad).

Nginx-Konfiguration, die funktioniert:

server {
        listen          80;
        listen          443 ssl;
        include snippets/mortis2-ssl.conf;
        server_name     mortis2;
        location /pad/
        {
                rewrite                /pad/(.*) /$1 break;
                rewrite                ^/pad$ /pad/ permanent;
                proxy_pass        http://localhost:9001/;
                proxy_pass_header Server;
                proxy_set_header  Host $host;
                proxy_buffering   off;
        }

        location /pad/socket.io {
                rewrite /pad/socket.io/(.*) /socket.io/$1 break;
                proxy_pass http://localhost:9001/;
                proxy_redirect         / /pad/;
                proxy_set_header Host $host;
                proxy_buffering off;
                proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
                proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
                proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
                proxy_set_header Host $host;  # pass the host header
                proxy_http_version 1.1;  # recommended with keepalive connections
                # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
                proxy_set_header Upgrade $http_upgrade;
                #proxy_set_header Connection $connection_upgrade;
        }

        location /static {
                rewrite /static/(.*) /static/$1 break;
                proxy_pass http://localhost:9001/;
                proxy_set_header Host $host;
                proxy_buffering off;
        }
}

Op sagte, minify true / false ändert das Ergebnis nicht. Op erwähnte auch keinen Rev-Proxy .... Ich werde mit minify true nachsehen, wenn ich nach Hause komme.

Bestätigt, dass es durch Minify verursacht wird.

https://github.com/ether/etherpad-lite/issues/3956#issuecomment -620476150 behauptete, minify false habe keinen Unterschied gemacht, und ich hätte mich selbst überprüfen sollen, ob dies der Fall war.

* Gesichtspalme.

Wird so schnell wie möglich beheben.

FWIW Nginx leidet ebenfalls unter diesem Fehler und der Fehler ist auf allen Seiten (Block, Index, Zeitschieber usw.) vorhanden.

Das Problem liegt in unserer Implementierung von clean-css . CSS 3 bis 4 haben die Option relativeTo und dieses Entfernen hat diesen Fehler verursacht. In meinem Beispiel habe ich zu rebase und rebaseTo gewechselt

https://github.com/JohnMcLear/etherpad-lite/commit/e684a3ba4129d1bae54e7b65a316a7d690217241 und ist ein semi-fix und https://github.com/JohnMcLear/etherpad-lite/commit/a8c66b3b513b058e89f70b8e8d5ab622b33f167d ist defo ein Hack. Es werden Symbole angezeigt, aber die Schriftart ist für einige Pad-Interna und wahrscheinlich für andere Elemente falsch.

Irgendwelche Vorschläge @jakubpawlowicz @seballot ?

@JohnMcLear Eine Möglichkeit, es für Sie zum https://github.com/jakubpawlowicz/clean-css#how , um beliebige Transformationen auf CSS-Eigenschaften anzuwenden

Die andere Idee besteht darin, Eingabeoptionen über einen Hash an clean-css zu übergeben (siehe https://github.com/jakubpawlowicz/clean-css/blob/master/test/module-test.js#L620 , z

new CleanCSS().minify({"path/to/stylesheet/a.css": { styles: "/* source of a.css goes here */" }})

und benutze die Option rebaseTo , aber ohne weitere Einsicht kann ich nicht sagen, ob es funktionieren würde oder nicht.

Viel Glück!

Geschlossen ? Ja wirklich ?

OP geschlossen ... Es sollte nicht geschlossen werden. OP FWIW können Sie auf Entfolgen oder Abbestellen klicken oder so, wenn Sie kein Rauschen möchten.

Dies ist immer noch nicht gelöst. Wenn EOW keinen Patch hat, werde ich versuchen, ihn zu patchen.

Ich würde wirklich gerne einen Community-Patch dafür sehen, wenn jemand bitte Zeit findet.

@JohnMcLear Ich würde wirklich gerne helfen und mir die Zeit dafür nehmen können, aber ich habe keine Entwicklerfähigkeiten und noch weniger in NodeJS. Ich hoffe, dass andere dazu in der Lage sind. Ich kann dich nur mit meinen Gedanken unterstützen ...

Obwohl ich es schätze, ändern deine Gedanken keine Windeln;)

Stoß @seballot

Hallo, ich habe nicht viel Ahnung davon, sorry ... Gibt es eine Möglichkeit, es lokal zu reproduzieren?

  1. Git-Klon develop
  2. Verwandle minify in true
  3. Führen Sie Etherpad aus und besuchen Sie ein Pad (um sicherzustellen, dass alles funktioniert).
  4. Installieren Sie Nginx
  5. Kopieren Sie das Folgende nach / etc / nginx / sites-enabled / default
server {
        listen       80;
        server_name  pad.example.com;

        access_log  /var/log/nginx/eplite.access.log;
        error_log   /var/log/nginx/eplite.error.log;

    location /pad/foo {
        rewrite                /pad/foo/(.*) /$1 break;
        rewrite                ^/pad/foo$ /pad/foo permanent;
        proxy_pass             http://localhost:9001/;
        proxy_pass_header Server;
        proxy_redirect         / /pad/foo;
        proxy_set_header       Host $host;
        proxy_buffering off;
    }

    location /pad/foo/socket.io {
        rewrite /pad/foo/socket.io/(.*) /socket.io/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_redirect         / /pad/foo/;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
        proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_set_header Host $host;  # pass the host header
        proxy_http_version 1.1;  # recommended with keepalive connections
        # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    location /static {
        rewrite /static/(.*) /static/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_set_header Host $host;
        proxy_buffering off;
    }

}

# we're in the http context here
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}
  1. Starten Sie nginx neu
    http://127.0.0.1 : 9001 / p / blah wird zu http://127.0.0.1/pad/foo/p/blah
  2. Öffnen Sie http://127.0.0.1/pad/foo/p/blah im Browser
  3. Klicken Sie im Browser auf die Registerkarte "Netzwerk" und beachten Sie, dass die inneren Iframe- Schriftarten 404. Dies liegt daran, dass überschreitet , aber cleanCSS ihn (zu Recht) in ../../../ umschreibt - nach meinem Verständnis Das liegt daran, dass sowohl das Pad als auch der Editor dieselbe @ font.css verwenden und beide unterschiedliche BasePaths haben. dann arbeitet man und man tut es nicht bei der Minimierung. Ich kann mir keine elegante Lösung vorstellen, aber ich denke, Sie könnten dazu in der Lage sein?

@seballot irgendein Fortschritt Kumpel?

Nein, tut mir leid, ich kann keine Lösung finden ...

Ich auch nicht, das cleanCSS macht etwas Magisches, das ich einfach nicht verstehe (ich bin kein CSS-Typ) und keine meiner Instanzen läuft in Unterverzeichnissen, daher ist es für mich auch nicht interessant zu lernen

Ich möchte nicht, aber ich muss möglicherweise cleanCSS durch csso ersetzen, da ich csso zum Laufen bringen kann, aber ich denke, dass ich das Problem letztendlich nicht richtig löse und csso für unseren Anwendungsfall nicht annähernd so leistungsfähig ist wie cleanCSS .

Ich habe cleanCSS dev gestoßen, um zu sehen, ob wir zusammenarbeiten können, um das Problem zu beheben :)

nett ! Wenn es mit CSSO gut funktioniert, warum nicht?

csso minimiert die Anzahl der Seitenladevorgänge, reduziert sie jedoch nicht. Außerdem bevorzuge ich cleanCSS als Projekt / Dokument usw. und es macht mir nichts aus, einige Ressourcen in ein gutes Projekt zu stecken, was bedeutet, dass ich mich auf ätherspezifische Unternehmungen konzentrieren kann

Ich stehe vor dem gleichen Problem wie in diesem Thread.

  • Installiertes Etherpad aus dem Git-Repository. Wenn ich ./bin/run.sh anziehe und Port 9001 auf localhost öffne, ist die Installation gut und die Symbole werden ordnungsgemäß angezeigt.
  • Wenn ich dies auf einem Nginx-Server ausführe (auf dem auch Jitsi ausgeführt wird), werden die Symbolleistensymbole nicht angezeigt. Alles andere scheint großartig zu funktionieren.

Kann mich jemand anleiten, wie ich dieses Problem umgehen kann? Es gibt keine wesentlichen Änderungen in der Datei settings.json.

Um dieses Problem zu umgehen, setzen Sie minify in settings.json auf false

Ich werde versuchen, diese Nacht einen Blick darauf zu werfen.

Ich konnte das Problem mithilfe der von John in https://github.com/ether/etherpad-lite/issues/3956#issuecomment -625163151 in derselben Ausgabe angegebenen Nginx-Konfiguration replizieren.

Ich denke, es gibt ein Problem sowohl in der veröffentlichten Nginx-Konfiguration als auch im Etherpad-Code.

Mehr Details später.

Ich habe gerade 2 Sekunden damit verbracht, mir den Nginx-Code anzusehen, und er sollte keine Konfiguration für /static wie es beim Kopieren / Einfügen der Fall ist, aber die Wurzel des Problems liegt tief in cleanCSS ...

Wir haben hier verschiedene Probleme.

  1. Die Test-Nginx-Konfigurationsdatei hatte die falsche Umleitung für /static . Der gesamte Abschnitt location /static muss von hier gelöscht ein Benutzer tatsächlich darüber beschwert hat, dass /static mit vielen anderen Webanwendungen in Konflikt geraten würde. Wahrscheinlich wurde er durch ein ähnliches Beispiel in die Irre geführt;

    Dies muss behoben werden, indem die Dokumentation (das Wiki? Irgendwo sonst im Internet?) Durchgesehen und die Qualität der Beispiele verbessert wird .

  2. 4177b3f9434e hat die font-face -Deklarationen von src/static/css/pad.css in zwei importierte Dateien ( src/static/css/pad/fonts.css und src/static/css/pad/toolbar.css ) in einem anderen Verzeichnis und URLs in src sind relativ zum Stylesheet-Pfad ;

  3. Darüber hinaus hätten wir nach dem Zusammenführen von 95fd5ce2a45e für die bevorstehende

Ich mache einige Tests und bereite eine PR vor.

# 4002 geöffnet, um dieses Problem zu beheben. Vielen Dank an @JohnMcLear für die Vorarbeiten.

@skramsa , @julpec , @lucaguindani , @ashishhari (und natürlich John): testen , um festzustellen , ob sie für sie funktioniert? Ich möchte, wenn möglich, eine unabhängige Validierung.

Bitte beachten Sie auch, dass für die Reverse-Proxy-Konfiguration keine spezielle Regel für "/ static" erforderlich ist.

Vielen Dank für Ihre Bestätigung. Das Setzen von minify auf false hat das Problem nicht gelöst
Problem für mich.
Ich verwende dies bei einer Jitsi-Installation auf einer AWS EC2-Instanz und dort
ist ein Nginx-Server, der zum Hosten von Jitsi und zum Starten des Knotens verwendet wird
Server für den Etherpad-Dienst auf demselben Computer an Port 9001.

Bedeutet dies, dass ich möglicherweise eine andere Nginx-Einstellung anpassen muss? (Ich nicht
Reverse Proxy richtig verstehen, aber könnte dies der Fall sein?) Oder ich auch
Ich muss nur warten, bis das Update verfügbar ist.

Am Do, 14. Mai 2020 um 6:07 Uhr schrieb muxator [email protected] :

Wir haben hier verschiedene Probleme.

1.

Die Test-Nginx-Konfigurationsdatei hatte die falsche Umleitung für / static. Das
Der gesamte Standort / statische Abschnitt muss von hier gelöscht werden
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-625163151 .
In dem E-Mail-Sturm, der in diesen Tagen eingegangen ist, denke ich daran, dass aBenutzer beschwerte sich - in der Tat -, dass / static mit vielen zusammenstoßen würdeandere Webanwendungen . Wahrscheinlich wurde er durch ein ähnliches Beispiel in die Irre geführt
zu diesem;

Dies muss durch die Dokumentation (das Wiki?
Wo sonst noch im Internet?) Und Verbesserung der Qualität derBeispiele .
2.

4177b3f
https://github.com/ether/etherpad-lite/commit/4177b3f9434e8516f8fe4f8e02b2a75ce5d64173
Die Deklarationen für Schriftarten wurden von src / static / css / pad.css auf zwei verschoben
importierte Dateien (src / static / css / pad / fonts.css und
src / static / css / pad / toolbar.css) in einem anderen Verzeichnis und URLs in
src sind relativ zum Stylesheet-Pfad
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src ;
3.

Darüber hinaus nach dem Zusammenführen von 95fd5ce
https://github.com/ether/etherpad-lite/commit/95fd5ce2a45e31980ad8c2562e3fe6f77c52d4ff
Für die bevorstehende Version 1.8.4 hätten wir ein Problem mit der Cache-Stalenität
das muss auch angegangen werden.

Ich mache einige Tests und bereite eine PR vor.

- -
Sie erhalten dies, weil Sie kommentiert haben.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628317976 ,
oder abbestellen
https://github.com/notifications/unsubscribe-auth/AH7VXAS65ZUAR33CPKSI6OLRRM4KZANCNFSM4MSSRTRQ
.

@skramsa , @julpec , @lucaguindani , @ashishhari (und natürlich John): testen , um festzustellen , ob sie für sie funktioniert? Ich möchte, wenn möglich, eine unabhängige Validierung.

Ok für mich zu testen. Ich habe keine spezielle Konfiguration für static .

Vielen Dank für Ihre Bestätigung. Das Setzen von minify auf false hat das Problem für mich nicht gelöst.

Aber es funktioniert bei mir. Unter Apache wechselte ich zu false und alles begann gut zu funktionieren.

Ich kann es testen.

Am Do, 14. Mai 2020 um 13:30 Uhr schrieb julpec [email protected] :

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (und natürlich John): ist jemand von euch
in der Position, diese PR zu testen, um zu sehen, ob es für sie funktioniert? Ich würde
wenn möglich wie eine unabhängige Validierung.

Ok für mich zu testen. Ich habe keine spezielle Konfiguration für statische.

Vielen Dank für Ihre Bestätigung. Das Setzen von minify auf false hat das Problem nicht gelöst
Problem für mich.

Aber es funktioniert bei mir. Unter Apache wechselte ich zu false und allem
begann gut zu arbeiten.

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
oder abbestellen
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

Auch die Bestätigung -> Einstellung minify auf false hat auf meinem System ordnungsgemäß funktioniert.
(Ich habe den Dienst wahrscheinlich beim letzten Mal nicht richtig neu gestartet).

Am Do, 14. Mai 2020 um 13:30 Uhr schrieb julpec [email protected] :

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (und natürlich John): ist jemand von euch
in der Position, diese PR zu testen, um zu sehen, ob es für sie funktioniert? Ich würde
wenn möglich wie eine unabhängige Validierung.

Ok für mich zu testen. Ich habe keine spezielle Konfiguration für statische.

Vielen Dank für Ihre Bestätigung. Das Setzen von minify auf false hat das Problem nicht gelöst
Problem für mich.

Aber es funktioniert bei mir. Unter Apache wechselte ich zu false und allem
begann gut zu arbeiten.

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
oder abbestellen
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

Aber es funktioniert bei mir. Unter Apache wechselte ich zu false und alles begann gut zu funktionieren.
Auch die Bestätigung -> Einstellung minify auf false hat auf meinem System ordnungsgemäß funktioniert.

@julpec , @ashishhari : Das Setzen von minify = false ist eine bekannte Problemumgehung .
Die Hoffnung ist jetzt zu sehen, ob # 4002 den Fehler behebt, wenn minify = true.

Das Verfahren wäre wie folgt: Tun Sie dies nur, wenn alle Schritte für Sie klar sind:

Beginnen Sie mit der Replikation des Fehlers:

  • Stellen Sie sicher, dass minify = true in settings.json
  • Starten Sie Etherapd neu
  • Besuchen Sie die Etherpad-Seite und stellen Sie sicher, dass die Symbolleistensymbole nicht angezeigt werden

Versuchen Sie das Update:

  • Behalte minify = true in settings.json
  • Bewerben Sie sich bei # 4002 (tun Sie es nur, wenn Sie damit vertraut sind)
  • Starten Sie das Etherpad neu
  • Besuchen Sie die Etherpad-Seite und überprüfen Sie, ob die Symbolleistensymbole jetzt korrekt angezeigt werden

Ich möchte, aber ich kenne das Verfahren zur Anwendung der PR nicht :(

Danke @muxator Ich werde innerhalb einer Stunde testen.

Oh wow, ich hätte mir das nie ausgedacht! Das sind Trottel.

git remote add mux https://github.com/muxator/etherpad-lite/
git fetch mux
git checkout mux/fix/fonts-behind-reverse-proxy

Für diejenigen, die auch testen möchten ..

Denken Sie nach dem Testen an git checkout develop sonst befinden Sie sich im veralteten Zweig von muxs

Danke, ich werde heute Nachmittag testen

Hrm Ich denke, etwas ist nicht ganz performant @muxator .. Ich sehe ~ 54 Anfragen, gegenüber ~ 49 (bei aktuellen develop ) - Beachten Sie, dass ich Plugins aktiviert habe, die zusätzliche Anfragen geben. Diese PR wäre also eine Regression der Seitenladeleistung, um einen undokumentierten / nicht unterstützten Anwendungsfall zu erfüllen, der meiner Meinung nach nicht akzeptabel ist.

image

Beachten Sie die mehrfachen Anforderungen für dieselbe Datei ... :( Es ist auf jeden Fall ein Fortschritt, aber mehrere Anforderungen für dieselbe Datei sind nicht die Lösung, nach der wir suchen.

Die Mehrfachanfrage kommt von dem unterschiedlichen Iframe, denke ich. Sowohl die Hauptseite als auch der Editor iframe benötigen die Schriftart, es war schon immer so nein?

afaik cleanCSS wurde verwendet, um das Problem @seballot zu beheben

es war schon immer so nein?

Ja, das war immer so.

Ich denke, cleanCss war mehr, um das Laden jedes CSS-Teils (pad / popups.css, pad / editbar.css, pad / chat.css ...) zu vermeiden und stattdessen nur ein pad.css zu laden

Bei Verwendung von iframe muss der Browser jedoch zweimal jede Dateifreigabe für den iframe anfordern. Der zweite Aufruf sollte jedoch den lokalen Cache verwenden ("aus dem Cache geladen").

Ich habe die Pull-Anfrage angewendet und es funktioniert ohne Probleme (mit Apache)

Danke @julpec.

Heute Abend werde ich versuchen, die beantworten, die

Super tnx mux

Gibt es eine Möglichkeit, HAR-Dateien irgendwo in Github hochzuladen? Ich habe # 4002 getestet und bin bereit, die Aufnahmen zu teilen, aber ich weiß nicht, wo ich sie hochladen soll.

Gemeinsame Elemente:

  • besuchte http: // localhost : 9001 / p / ciao
  • kein Reverse Proxy
  • Produktionsmodus: falsch
  • Beginnen Sie mit einem leeren Browser-Cache

Variablen:

  • Version: 4816785aef45 vs # 4002
  • Cache: kalt ( erste Ladung ) vs heiß (> = zweite Ladung )
  • minimieren: wahr gegen falsch
  • Browser: Chrom 81 vs Firefox 76

Dies sind vier binäre Variablen -> 2 ^ 4 = 16 Möglichkeiten .
Das hat viel Zeit gekostet!

Hier sind die relevanteren Fälle:
| Beschreibung | aktuelle Entwicklung (4816785aef45) | PR # 4002 |
| ---- | ---- | ---- |
| Firefox, minimiert, erstes Laden | 34 Anfragen
1,61 MB
1,61 MB übertragen | 36 Anfragen
1,61 MB
1,53 MB übertragen |
| Firefox, minimierter, heißer Cache | 29 Anfragen
1,12 MB
216 KB übertragen | 31 Anfragen
1,18 MB
216 KB übertragen |
| Chrom, minimiert, erste Last | 44 Anfragen
2,0 MB
1,5 MB übertragen | 109 richieste
3,0 MB
1,1 MB übertragen |
| Chromium, minimierter, heißer Cache | 45 Anfragen
2,2 MB
5,7 KB übertragen | 129 Anfragen
4,7 MB
4,7 KB übertragen |

Das Endergebnis ist:

  • Chrome und Firefox haben eine völlig andere Methode, um ihren Datenverkehr zu messen
  • PR # 4002 führt weitere Anforderungen an den Server ein
  • Die Cache-Trefferquote verbessert sich : Die übertragene Spalte nimmt ab!
  • Die Ladezeiten bleiben innerhalb der Grenzen des Messrauschens gleich

Dies waren auch meine Ergebnisse. Ich nahm mir auch die Zeit, um Tools zur Erstellung von Leistungsprofilen für die Ladegeschwindigkeit von Seiten (über Entwickler-Tools hinaus) zu recherchieren, und entschied, dass die Ergebnisse für unsere Anwendung geeignet waren, wenn Entwickler-Tools keine signifikante Abweichung von einem Mittelwert aufwiesen.

Das Verringern der Gesamtübertragungsgröße ist eindeutig eine gute Sache, aber der Overhead von http-Anforderungen kann aufgrund der Latenz teuer sein. Wir können dies zusammenführen, aber denken Sie daran, dass wir uns bemühen sollten, das Front-End neu zu schreiben (was sich aufgrund all der Inline-JS, die letztendlich verschoben werden müssen, unvermeidlich anfühlt).

Alles in allem ist Etherpad im Vergleich zu den meisten anderen in diesem Bereich großartig, mit Ausnahme von Google Docs, dem Goldstandard für absolut schockierend schnelle "Bearbeitungszeit", die in dieser Welt König ist und nicht das Ende der Seite "Laden".

Also TLDR; @Muxator zusammenführen - Dieser Thread ist eine Ressource für diejenigen, die für Etherpad-Instanzen NICHT in Unterordnern optimieren möchten.

Gute Arbeit !

+1 tnx!

: +1:

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen