Javascript - .NET Specify Which Files Should Be Cached?
Jan 14, 2010
I am developing a website in ASP.NET and I am using various javascript frameworks/libraries. The different files belonging to these frameworks/libraries rarely changes thus there is no reason to refresh those files once they have been sent to the client browser (atleast not everytime a page is served).I see that the HttpContext object can be used somehow, that I can set the content expiration on the files/folders on the IIS, or maybe setup somekind of caching in the web.config file. 1. What is best practice/what approach should I take
I built the asp.net website in release mode, set the debug flag to false in web.config, but still some of the webresource.axd and scriptresource.axd and javascript files are not getting cached. fiddler shows the status code "200" for these items instead of "304". what else I am missing to cache these files?
How do i make sure that for particular ASP.NET page CSS/JS file will not be cached on browser side (each time its loaded from server)? Anything that can be done using the server side code?
I've seen "What is an elegant way to force browsers to reload cached CSS/JS files?" but the answer there uses PHP and it doesn't address the fact that the CSS is injected dynamically by an ASP.Net Theme.
I have used a external js file for a upload operation in my page.. once the file get loaded in temporary folder, it gets loaded from there even if new changes are made the old version that exist in temp folder gets loaded... i have writtenResponse.Cache.SetCacheability(HttpCacheability.NoCache); on my page But it still loads the js file in cache. When i cleared the temporary files manually it works fine...But i cannot ask my client to clear temp folder,,,Is there any solution to load js file not from the cache, ie reload every time page is loaded...
We have an ASP.NET web application and it's hosted using IIS 6.0, in the app we have these several javascript and css files located in a folder, and for performance sake (according to YSlow) we set the folder content expiration header to 1 year. Everything worked just fine until recently when we deployed the latest build to the server, in which we had made some changes to those javascript and css files. For some reason after the deployment some of our end users don't see the latest changes when they connected to the app, even after they cleared the cache in IE. We have also restarted the IIS on the server and the problem still remained. When I went into the IE Temporary Internet Files folder on one of these machines I saw the files were still the older version and not the latest one, I had to manually delete the files from the Temporary Internet Files folder then they were able to see the latest changes. I'm baffled by this, how come only some users who couldn't see the changes but some others do (without having to do anything by the way), and how do I make sure that for future releases we won't have to do anything like what did (manually deleting the cached files)? For now I disabled the Content Expiration option in IIS for these files but I would like to know if there is a way that I can enable the content expiration (to help performance) but at the same time making sure when the files are updated, the latest version will be used for the end user (instead of the cached version)?
The problem is when I send AJAX (XmlHttpRequest) request from other page to this page, that response does not get cached on any browser but IE. (On IE, it gets cached even if I don't specify). How do I make it cache?
i have made an .aspx page of c# in folder named as "USERPANEL". Also placed all my js in "js" folder and css files in "css" folder & all these pages are placed under "USERPANEL" folder same location where i have create a page. If i would placing the css on the page itself then it's working but not loading any external stylesheets. why? below is code as i am attaching the fontawesome file placed in fonts folder.
I've been working on this for a while and was wondering if anyone has run into the issue of error 404 on IIS. More specifically, when I type in http://localhost/test/test.aspx, the page runs, but the referenced files (JS and CSS) are not being used.
Is it possible to merge several JavaScript files being used on a site into one? I'm looking to do this to minimize server loads by forcing only one download. This way I can keep my JavaScript organized into separate files and still have efficiency.
I have heard that if we use gzip, aspx files will be loading faster. But, I am not sure as to how to use it in my web applications. I am hosting my site with GODADDY (ASP 2, IIS 7) Can anyone tell me if I will be able to use gzip? Can you give me a sample file where gzip is used?
I am developing in asp.net mvc and using multiple javascript files.eg jquery, jquery-ui, google-maps my own js files etc.for performance should i combine these into one?if so how?
I recently ran yslow on a page i have (master paged etc) and it returned that there were far too many javascript files included (most of which I haven't added).
I guess my question is that given i have v1.0.20229.0 of the toolkit.dll (over .net 2)
I'm wondering if subsequent releases have fixes for this sort of thing?
If you have too many javascript file includes with a compositescript in a script manager you get this error..."The resource URL cannot be longer than 1024 characters. If using a CompositeScriptReference, reduce the number of ScriptReferences it contains, or combine them into a single static file and set the Path property to the location of it."
I know how to fix this using a plane old asp:scriptmanager (use script manager proxies). But how do I fix it using a ToolkitScriptManager?
<ajaxToolkit:ToolkitScriptManager ID="GeneralScriptManager" CombineScripts="true" CombineScriptsHandlerUrl="Utility/CombineScriptsHandler.ashx" runat="server" AsyncPostBackTimeout="480" EnablePageMethods="true"> <CompositeScript> <Scripts> <asp:ScriptReference Path="JavaScript/jQuery/jquery-1.4.1.min.js" / ... A whole lot more script references here </Scripts> </CompositeScript> </ajaxToolkit:ToolkitScriptManager>
UpdateI've tried doing this with the script combiner included in the sample application. I think it's right, but I've been wrong plenty of times before... No luck though.Another update So, I thought that maybe if I included multiple CompositeScript blocks within the single ToolkitScriptManager it might create them all as separate files. Nope. Still get the same error. No one has any ideas? When I Google "toolkitscriptmanager cannot be longer than 1024 characters" this StackOverflow question is the number 1 result...
var mySession = "<%= Session["MyID"] %>"; alert ( mySession );
and when I place this code in my aspx page inside a script tag, it works fine. But it doesn't work in an external js file. I am not able to figure out the problem.
Is there anything wrong in my code, or is it like this by default?
I have a ASP.Net 3.5 web site I developed on my old XP sp3 machine. The app uses Master Pages and App_Themes that include style sheet and images - and also an image folder off the main root for most of the images. There are also some javascript files in a /scripts folder for jQuery and one other. I now have a brand new Win 7 64-bit dev machine and I migrated the app there. It compiles and runs fine - even through the Enterprise Library hitting the SQL database - the only problem I am haveing is with the CSS and javascripot files. For some reason that I cannot detect they are not resolving when I run the app. The CSS does resolve at design time and all the styles are rendered correctly in the designer. This leads me to believe that it may be an IIS 7 issue?
I have downloaded the source code for the latest version of the AjaxControlToolkit and have noticed that there are differences in the scripts included in the solution.
Previously, only one debug version of a JavaScript file was included for each control. This was then stripped of newlines and comments before building in release mode to embed these modified files in the output dll. However, now the solution has both the debug.js and .js versions (debug and compressed versions, respectively) included in the solution for each control.
My question is, if I desired to make changes to the debug versions of the JavaScript file for any control, does the compressed version of the file get generated automatically or is there some manual action I need to take to produce those files? It appears as though with this solution there are no integrated build tasks as in the previous versions so I feel like my latter suspicion may be correct but was hoping for input from somebody who knows more about this.
I do not like the idea of including overriden methods of toolkit funtions in my site's JavaScript, I am just curious how I would go about producing the release version of the script. In other words, how would the developers that work on the AjaxControlToolkit do this when working with the solution.\ | m ny;[6n n
I am willing to follow the rules of the W3C where it is recommended that javascript and CSS files should be in individual files and not within the page.
Good, following this rule, and not wanting to overload the master page, I would like to embed the dependencies dynamically. So how could I insert the libraries dynamically? I think the bigger problem is the Ajax requests.
We are working on an ASP.NET CMS project using jQuery as the basis for our client side scripting. The jquery-1.2.6.js file is the only script file that is always included. Other script files are currently included depending on what components the CMS editor is using on a page or page template.A lot of the script combiners produce a static script. If we took that approach we would have to add all possible script files in just in case they were needed. We are not currently using any of the ASP.NET Ajax extensions so have not looked at what that may give us.
I am using AJAX in some pages. this causing my website to grow. 300K is ajax. I would like to lower this to a normal size so the site can be loaded quicly.I have IIS7 and I already have encription for files. What else should I do to handle this problem?
Actually we have series of images named 1.jpg, 2.jpg, 3.jpg, 4.jpg & 5.jpg.
when i delete 2.jpg, then i rename 5.jpg with 2.jpg. But all this happens on server & on page load it is displaying 2.jpg from temporary files, not from server.
Solution is in two ways:-
1. either I will make page not to save any images on client's system(in temporary internet files).
2. or i will have to delete all images from temporary internet files.
I'm looking for possible ways for sending files from browser to server. One obvious way is using form with enctype='multipart/form-data'. I wonder if there are other ways than this.
The reason I ask you this question is this file uploader: http://aspnetajax.componentart.com/control-specific/upload/features/core_features/WebForm1.aspx
It's not flash based, but it sends the file in a way that it gives you a progress bar, but when you send a file with form with enctype='multipart/form-data' the whole file will be send to the server so you can't actually show a progress bar of uploading process.