Forum Discussion

John Aage Andersen's avatar
John Aage Andersen
Iron Contributor
Feb 20, 2017

Handling content with slow change cycle, how do you do it?

Background (clarified):
We have several teams that provides service to customers. For each customer there are specific documents, information, etc.
Each team will need to work with their customers and the customers' content. We have a customers list, a services list and a teams list. The list of customers changes with a slow cycle, once per week or sometimes even slower.
Each team may provide one or more services to one or more customers. Each customer may receive one or more services, each service provided by one team.

 

We cannot use an OOB solution with connecting webpart for the 3 above lists.

Our solution was to provide each team with their team page. In the team page we have added the list of customers which they provide service to. The list of customers is styled using XSL-styling, so that the customers appear as a cloud of customer names. For some teams the cloud contains a few customers, for others a lot.

 

Question:
We see that the customer cloud may be slow in showing, using 1), when there are several to a lot of customers for a team. (team > services > customers)
1) We have considered caching the customers list for each team in the browser local storage and use CEWP to present the cloud using javascript. This solution gathers the team's services, uses those for a CamlQuery on the customers, thus getting all the team's customers.
2) We have considered generating the customer cloud as a static HTML file and then use CEWP to present the file. This solution would then need to be redone when customers changes.

 

Ps. we are running with Classical Experience only!


Have you done something similar? What did you do? What did you do differently?

  • Asish Padhy's avatar
    Asish Padhy
    Brass Contributor

    Hi John,

     

    I suppose the problem is with XSL rendering. XSL are very notorious in parsing and processing time and takes a lot of client memory and cache to render. I had the same issue with SharePoint 2013 on prem even when using caching (not same requirement but rendering intranet content).

     

    Is there is a reason for using XSL and not using other Javascript or Client modelling tools?

     

    Thanks,

    Asish.

    • John Aage Andersen's avatar
      John Aage Andersen
      Iron Contributor
      Thank you for replying Asish - we are looking for another solution. The question is more about presentation of information that has a slow change cycle - as we are using SharePoint Online and we understand that the cache may not really be useful in that environment, then we are looking for other ways of speeding up the presentation, without having to go to the servers for the information every time the page is refreshed.

      We understand about using JSlink javascripts for modifying column content/presentation, but for a customer cloud, we would have to modify the whole template - which we haven't found any useful source of information about, yet. :)

      If we understand XSL processing correctly - using XSlink, then that is done on the server side, before the information is provided to the client. Correct us if we are wrong on that!
      • Asish Padhy's avatar
        Asish Padhy
        Brass Contributor

        Hi John,

         

        Sorry haven't used XSlink before so cannot comment on that. But in either case, the XML parsing happening on server or via App code will eat up your cache in session states if multiple users are opening the page simultaneously which seems to be the case.

         

        JSlink is a better option but yes this has to built it into a custom solution packages or apps to deploy to client sites or have to manually set for each web part.

         

        I don't know the exact requirements but again I suppose caching is not a fix to server trips issue. Doing small data pulls and getting data refershed faster is a better solution from my experience. So, you might divide the information into sections/small subsets (may be use an accordion or search) to pull the data into groups. Let me know if this makes sense or may be a complete miss to your requirement.

         

        Thanks,

        Asish

  • paulpascha's avatar
    paulpascha
    Bronze Contributor

    Have you investigated what is actually causing things to be slow? Is the slowness in data retrieval or in presentation? What type of query mechanism are you currently using to query the customers for a certain team? I assume by your description customers are bound to teams using mulit-valued lookup fields?

    • John Aage Andersen's avatar
      John Aage Andersen
      Iron Contributor
      Thank you for replying - I have clarified the background and questions in the original post.

Resources