Отговори (2)
Това мирише на това, че го правите по грешен начин.
Очевидно изграждате изгледите си в края на сървъра, изпълнявате там логика, която деактивира/разрешава контроли и т.н. Сега наистина се сблъсквате с проблеми, защото ако HTML е кеширан, такава е и логиката, използвана за изграждането на този HTML.
Можете да хакнете пътя си през това, като „изчистите кеша“ при излизане. Но какво ще стане, ако в бъдеще правата на даден потребител могат да бъдат променени, докато той все още е влязъл? Трябва да измислите още един хак, за да работи това. В крайна сметка ще създадете тон спагети код, който е много крехък.
Вместо това изгледите, АКО искате да ги кеширате, НЕ трябва да съдържат никаква логика. Логиката, която активира или деактивира елементи, както и всичко останало, трябва да се диктува от вашия JavaScript и данните, които получавате от бекенда. Изгледът е просто HTML шаблон, който консумира данните, които са в модела на изглед на JavaScript.
По принцип трябва да промените съзнанието си и да започнете да използвате Durandal/Knockout по начина, по който трябва да се използва: MVVM, обвързвания във вашия HTML, които задават състоянието на DOM въз основа на данни във вашия изгледмодел. Това, което правите в момента, е „твърдо кодиране“ на състоянието на HTML, когато изобразявате HTML на сървъра, и се опитвате да хакнете своя път през нединамичния характер на това решение.
Ако все пак искате да продължите текущия си ред на кодиране: лесният начин за постигане на пълно нулиране на вашия JS и HTML е да направите пълно опресняване на страницата, като по този начин „напуснете вашия SPA“.
с помощта на urlArgs можете да деактивирате кеширането, добавете това към вашия require.config
:
urlArgs: "_disable_cache_=" + (new Date()).getTime()