[Vorschlag] Einheitliches Mission Caching

  • Hey Scripter


    Ich habe ein wenig in meinem Hirn gekramt und dachte mir ich schlag mal was vor und frag die Scripting Community nach ihrer Meinung.


    Man will ja die LSS Server so weit es geht was Auslastung betrifft schonen. Konkret geht es mir gerade um die neue Missions API.
    Um nicht jedesmal beim Seite laden die Einsatz Details neu zu laden, ist das einmalige cachen im SessionStorage am praktikabelsten.

    Was ist aber nun, wenn ein Spieler 3 Scripte nutzt die alle auf die API zugreifen? Alle 3 Scripte cachen seperat von einander die API Ergebnisse.

    Da kam mir die Idee und die Frage, wie ihr als Scripter dazu steht, wenn man sich auf einen "einheitliche" sessionStorage Key einigt, indem die ajax response für alle gespeichert wird.


    Ggf. würde so nur ein Script eine Abfrage machen und alle anderen sich an dessen Ergebniss bedienen.

    Kompatibilitäts Probleme könnten vermieden werden, wenn hierbei alle Hand in Hand arbeiten würden.


    Script A und Script B nutzen beide die API
    Script A lädt als erstes und signalisiert anderen Scripts durch das setzen des leeren SessionStorages, dass es selbst sich gerade um die Anfrage kümmert.
    Script B tut das selbe, stellt fest, dass bereits ein anderes Script sich um diese Beschaffung kümmert und wartet auf die vervollständigte Bearbeitung von A.

    Anschließend können Script A und Script B beide aus dem gleichen SessionStorage Key ihre Daten abfragen, ohne doppelte Anfrage/Caching.

    Probleme die entstehen könnten:


    Ein Script crashed nachdem es den Session Storage "blockiert" hat. Alle anderen Scripts warten auf Vervollständigung, die niemals kommen wird.


    Ein Script geht falsch mit dem Cache um (schreibt falsch etc.) und sorgt damit für falsche Daten für andere Scripts



    Ich hoffe ich konnte meinen Punkt einigermaßen darstellen und würde mich über eine Diskussion hierzu freuen.


    LG Lennard

  • LennardTFD

    Hat den Titel des Themas von „Einheitliches Mission Caching“ zu „[Vorschlag] Einheitliches Mission Caching“ geändert.
  • Gekauft und genommen!

    Vorschlag für den Key:

    Code
    mission_specs_cache


    Den nutz ich zumindest schon für den LSSM V.4 :)

  • Probleme die entstehen könnten:


    Ein Script geht falsch mit dem Cache um (schreibt falsch etc.) und sorgt damit für falsche Daten für andere Scripts


    Niemals die verwendete Quelle manipulieren. Wenn man das unbedingt machen muss dann mit einer Kopie dessen.


    Ansonsten eine gute Idee, da würde ich mich dranhängen. Wie wir das Kind dann nennen ist mir relativ wurscht. :-)

  • Aus aktuellem Anlass würde ich das vielleicht gerne für alle APIs einführen.

    Ich schlage hiermit folgendes Schema vor, welches dann einheitlich für alle (auch ggf. neue) APIs wäre:

    api_API-NAME_cache

    Das sähe dann aktuell so aus:

    • vehicle_states => api_vehicle_states_cache
    • vehicles => api_vehicles_cache
    • buildings => api_buildings_cache
    • credits => api_credits_cache
    • allianceinfo => api_allianceinfo_cache
    • einsatze.json => api_einsaetze_cache
  • Ich bin zwar kein Scripter, auch wenn ich mich damit noch intensiv befassen möchte, finde es im generellen eine gute Idee wenn die Scripts im weitesten Sinne den selben Standard haben.

    Auch wenn du glaube ich nur einmal vehicle_states => api_vehicle_states_cache brauchst.

  • Ich bin zwar kein Scripter, auch wenn ich mich damit noch intensiv befassen möchte, finde es im generellen eine gute Idee wenn die Scripts im weitesten Sinne den selben Standard haben.

    Auch wenn du glaube ich nur einmal vehicle_states => api_vehicle_states_cache brauchst.

    Nene, ich bin mir ziemlich sicher, dass das korrekt doppelt aufgelistet war :P

    Habs trotzdem für dich korrigiert :)

  • Ich kenne mich da ja auch nicht ganz so gut aus, aber wäre es nicht am einfachsten, wenn es ein Script gäbe, das einzigst und alleine dafür da ist, die Caches abzufragen und alle anderen Scripte dann nur daraus lesen, also garnicht selber versuchen abzufragen?

    Wäre zwar ein Script mehr, das man installieren müsste, aber das wäre doch kein Problem oder?

  • Ja und Nein.

    Dafür spräche definitiv, dass sich nicht jedes Script einzeln darum kümmern muss und somit der einzelne, besonders die unerfahreren, Scripter entlastet werden würde.

    Im neuen LSSM wird das auch wieder so sein: Das Laden handelt der Core, so dass das einzelne Modul da nichts machen braucht.

    Für die ganze Scriptvielfalt das zu machen wäre aber meines Wissens nach nicht wirklich (einfach umsetzbar) möglich, aus folgenden Gründen:

    • Wir können nicht festlegen in welcher Reihenfolge die Scripts geladen werden.
    • Das Script, das die Werte in den sessionStorage laden soll, sollte das nur auf Bedarf machen.

    Dafür gäbe es Möglichkeiten, aber es wäre meiner Meinung nach ein Mehraufwand, der sich so nicht lohnt.

    Sollte man sich hier im Forum auf einen allgemeinen Scripting-Standard einigigen, in dem gewisse Dinge klar geregelt sind, könnte man sich so etwas überlegen, aber das wiederum könnte neue Scripter abschrecken, weils ihnen dann doch zu hoch ist.


    Alles in allem ist die Idee sicherlich gut, aber da mangelt es aktuell einfach an sinnvollen Unsetzungsmöglichkeiten.